Frage

Ich möchte um eine UITextView eine dünne graue Grenze haben. Ich habe durch die Apple-Dokumentation gegangen, konnte aber keine Eigenschaft dort finden. Bitte Hilfe.

War es hilfreich?

Lösung

#import <QuartzCore/QuartzCore.h>

....

// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];

Andere Tipps

Fügen Sie die folgende für abgerundete Ecken:

self.yourUITextview.layer.cornerRadius = 8; 

Hier ist der Code, den ich verwenden, um einen Rahmen um meinen TextView Steuerelement hinzuzufügen Namen „tbComments“:

self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;

Und hier ist, wie es aussieht:

eingeben Bild Beschreibung hier

Kinderleicht.

Ich füge UIImageView als Subview des UITextView. Dies entspricht der nativen Grenze auf einem UITextField, einschließlich der Steigung von oben nach unten:

eingeben Bild Beschreibung hier

textView.backgroundColor = [UIColor clearColor];
UIImageView *borderView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height)];
borderView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
UIImage *textFieldImage = [[UIImage imageNamed:@"TextField.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 8, 15, 8)];
borderView.image = textFieldImage;
[textField addSubview: borderView];
[textField sendSubviewToBack: borderView];

Dies sind die PNG-Bilder die ich benutze, und eine jpg-Darstellung:

@ 1x

@ 2x

eingeben Bild Beschreibung hier

Arbeiten groß, aber die Farbe sollte ein CGColor sein, nicht UIColor:

view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];

für Swift Programmierung, benutzen Sie diese

tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor

Das ist so nah, wie ich kann von einer ursprünglichen UITextField

func updateBodyTextViewUI() {
    let borderColor = UIColor.init(red: 212/255, green: 212/255, blue: 212/255, alpha: 0.5)

    self.bodyTextView.layer.borderColor = borderColor.CGColor
    self.bodyTextView.layer.borderWidth = 0.8
    self.bodyTextView.layer.cornerRadius = 5
}

ich glaube, die oben genannten Antworten auf die früheren Versionen von Swift sind. Ich googeln ein bisschen und die folgenden Code funktioniert für Swift 4. Nur teilen es für jeden, es profitieren können.

self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0;
self.textViewName.layer.cornerRadius = 8;

Happy Coding!

Wie von iOS 8 und Xcode 6, finde ich jetzt die beste Lösung ist UITextView Unterklasse und die Unterklasse als IB_DESIGNABLE markiert, die Sie über die Grenze in Storyboard sehen können.

Rubrik:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface BorderTextView : UITextView

@end

Umsetzung:

#import "BorderTextView.h"

@implementation BorderTextView

- (void)drawRect:(CGRect)rect
{
    self.layer.borderWidth = 1.0;
    self.layer.borderColor = [UIColor blackColor].CGColor;
    self.layer.cornerRadius = 5.0f;
}

@end

Dann einfach Ihre UITextView in Storyboard in die Länge ziehen und legen Sie seine Klasse BorderTextView

Das Ding, das machte es (zusätzlich hier zu folgenden Antworten) arbeiten fügt das borderStyle Attribut:

#import <QuartzCore/QuartzCore.h>
..

phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;

Nur eine kleine Zugabe. Wenn Sie die Grenze etwas breiter zu machen, wird es mit der linken und rechten Seite des Textes stören. Um zu vermeiden, dass, habe ich die folgende Zeile:

self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);

In Swift 3 können Sie die folgenden zwei Zeilen verwenden:

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0

Ich löste dieses Problem in Storyboard durch eine komplett deaktiviert UIButton hinter dem UITextView setzen und macht die Hintergrundfarbe des UITextView Clear. Dies funktioniert ohne zusätzlichen Code oder Pakete erforderlich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top