Odpowiedzi:
#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 ...
, ale jak powiedziałem, warstwa jest tylko do odczytu, więc warstwa nie ma żadnych metod ani zmiennych do ustawienia
Dodaj następujące informacje dla zaokrąglonych rogów:
self.yourUITextview.layer.cornerRadius = 8;
Oto kod, którego użyłem, aby dodać obramowanie wokół mojej TextView
kontrolki o nazwie „tbComments”:
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
A oto jak to wygląda:
Bułka z masłem.
Dodaję UIImageView
jako podokres UITextView
. To dopasowuje natywną ramkę na a UITextField
, w tym gradient od góry do dołu:
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];
Oto obrazy png, których używam, i reprezentacja jpg:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Działa świetnie, ale kolor powinien być a CGColor
, a nie UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Uważam, że powyższe odpowiedzi dotyczą poprzednich wersji Swift. Wyszukałem trochę w Google i poniższy kod działa dla Swift 4. Po prostu udostępniam go komukolwiek, kto może skorzystać.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Miłego kodowania!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
do szybkiego programowania użyj tego
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
jest to tak blisko, jak tylko mogłem z oryginalnego 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
}
możesz dodać obramowanie do UITextView z Storyboard - Identity Inspector - User Defined Runtime Attribute
Począwszy od iOS 8 i Xcode 6, teraz uważam, że najlepszym rozwiązaniem jest podklasa UITextView i oznaczenie podklasy jako IB_DESIGNABLE, co pozwoli ci wyświetlić obramowanie w scenorysie.
Nagłówek:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Realizacja:
#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
Następnie po prostu przeciągnij swój UITextView w scenorysie i ustaw jego klasę na BorderTextView
To, co sprawiło, że zadziałało (oprócz podążania za odpowiedziami tutaj), to dodanie borderStyle
atrybutu:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Rozwiązałem ten problem w scenorysie, umieszczając całkowicie wyłączony UIButton
za UITextView
i ustawiając kolor tła UITextView
clearColor. Działa to bez konieczności dodatkowego kodu lub pakietów.