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.
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:
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:
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:
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.