Я хочу иметь тонкую серая рамка вокруг UITextView
. Я просмотрел документацию Apple, но не смог найти там никакой собственности. Пожалуйста, помогите.
Bordered UITextView
Ответ 1
#import <QuartzCore/QuartzCore.h>
....
// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
Ответ 2
Добавьте следующие закругленные углы:
self.yourUITextview.layer.cornerRadius = 8;
Ответ 3
Вот код, который я использовал, чтобы добавить границу вокруг моего элемента управления TextView
с именем "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
И вот как это выглядит:
Легкий peasy.
Ответ 4
Я добавляю 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];
Это png-изображения, которые я использую, и представление jpg:
Ответ 5
Отлично работает, но цвет должен быть CGColor
, а не UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Ответ 6
для Swift Programming, используйте этот
tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
Ответ 7
это как можно ближе к исходному 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
}
Ответ 8
Как и в 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
Ответ 9
То, что заставило его работать (в дополнение к следующим ответам здесь) добавляет атрибут borderStyle
:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Ответ 10
Просто небольшое дополнение. Если вы сделаете границу немного шире, это будет мешать левой и правой части текста. Чтобы этого избежать, я добавил следующую строку:
self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);
Ответ 11
В Swift 3 вы можете использовать следующие две строки:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Ответ 12
Я полагаю, что приведенные выше ответы относятся к предыдущим версиям Swift. Я немного погуглил, и приведенный ниже код работает для Swift 4. Просто делюсь им с кем угодно.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0;
self.textViewName.layer.cornerRadius = 8;
Удачного кодирования!
Ответ 13
Я решил эту проблему в раскадровке, полностью отключив UIButton
позади UITextView
и сделав цвет фона UITextView
clearColor. Это работает, не требуя дополнительного кода или пакетов.