Відповіді:
#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 ...
, але, як я вже сказав, шар доступний лише для читання, тому в шарі немає встановлених методів чи змінних
Додайте наступне для закруглених кутів:
self.yourUITextview.layer.cornerRadius = 8;
Ось код, який я використав, щоб додати межу навколо мого TextView
елемента управління під назвою "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
А ось як це виглядає:
Простенька.
Я додаю UIImageView
як підвід UITextView
. Це відповідає рідній межі а UITextField
, включаючи градієнт зверху вниз:
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];
Це зображення, які я використовую, та зображення у форматі jpg:
code
: resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Чудово працює, але колір повинен бути CGColor
не, а не UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Я вважаю, що наведені вище відповіді стосуються попередніх версій Swift. Я трохи погукав Google, і наведений нижче код працює для Swift 4. Просто діліться ним для тих, хто йому може принести користь.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Щасливе кодування!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
для програмування Swift використовуйте це
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
це максимально близько від оригінального 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
}
ви можете додати межу до UITextView з панелі розгортки - інспектор ідентичності - визначений користувачем атрибут виконання
Що стосується iOS 8 та Xcode 6, тепер я вважаю, що найкращим рішенням є підклас UITextView і позначити підклас як IB_DESIGNABLE, що дозволить вам переглядати межу в дошці розкадрувань.
Заголовок:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Впровадження:
#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
Потім просто перетягніть ваш UITextView з табло та встановіть його клас BorderTextView
Те, що змусило його працювати (на додаток до наступних відповідей тут), - це додавання borderStyle
атрибута:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
У Swift 3 ви можете використовувати такі два рядки:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Я вирішив цю проблему в раскадровці, поставивши повністю відключений UIButton
позаду UITextView
та зробивши колір тла UITextView
clearColor. Це працює, не вимагаючи додаткового коду чи пакетів.