Antworten:
#import <QuartzCore/QuartzCore.h>
....
// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
self.myView.layer.borderWidth ...
, aber wie gesagt, die Ebene ist schreibgeschützt, sodass die Ebene keine Methoden oder Variablen zum
Fügen Sie für abgerundete Ecken Folgendes hinzu:
self.yourUITextview.layer.cornerRadius = 8;
Hier ist der Code, den ich verwendet habe, um einen Rahmen um mein TextView
Steuerelement mit dem Namen "tbComments" hinzuzufügen:
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Und so sieht es aus:
Kinderleicht.
Ich füge UIImageView
als Unteransicht der UITextView
. Dies entspricht dem nativen Rand auf a UITextField
, einschließlich des Verlaufs von oben nach unten:
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 von mir verwendeten PNG-Bilder und eine JPG-Darstellung:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Funktioniert super, aber die Farbe sollte a sein CGColor
, nicht UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Ich glaube, die obigen Antworten beziehen sich auf die vorherigen Versionen von Swift. Ich habe ein bisschen gegoogelt und der folgende Code funktioniert für Swift 4. Teilen Sie ihn einfach für jeden, der davon profitiert.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Viel Spaß beim Codieren!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
Verwenden Sie diese Option für die schnelle Programmierung
tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
UIColor(white: 0.2, alpha: 1).CGColor
Dies ist so nah wie möglich an einem originalen 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
}
Sie können UITextView über das Storyboard - Identity Inspector - Benutzerdefiniertes Laufzeitattribut einen Rahmen hinzufügen
Ab iOS 8 und Xcode 6 finde ich jetzt die beste Lösung darin, UITextView zu unterklassifizieren und die Unterklasse als IB_DESIGNABLE zu markieren, damit Sie den Rand im Storyboard anzeigen können.
Header:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Implementierung:
#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
Ziehen Sie dann einfach Ihre UITextView in das Storyboard und setzen Sie ihre Klasse auf BorderTextView
Die Sache, die es funktioniert hat (zusätzlich zu den Antworten hier), ist das Hinzufügen des borderStyle
Attributs:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
In Swift 3 können Sie die folgenden zwei Zeilen verwenden:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Ich habe dieses Problem im Storyboard gelöst, indem ich ein vollständig deaktiviertes Element UIButton
hinter das UITextView
und die Hintergrundfarbe der UITextView
clearColor gesetzt habe. Dies funktioniert ohne zusätzlichen Code oder Pakete.