Câu trả lời:
#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 ...
, nhưng như tôi đã nói, lớp chỉ đọc, vì vậy lớp không có bất kỳ phương thức hoặc biến nào để đặt
Thêm các mục sau cho các góc tròn:
self.yourUITextview.layer.cornerRadius = 8;
Đây là mã tôi đã sử dụng, để thêm đường viền xung quanh TextView
điều khiển của tôi có tên là "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Và đây là những gì nó trông giống như:
Dễ như ăn bánh.
Tôi thêm UIImageView
như là một subview của UITextView
. Điều này khớp với đường viền gốc trên a UITextField
, bao gồm cả gradient từ trên xuống dưới:
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];
Đây là những hình ảnh png tôi sử dụng và đại diện jpg:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Hoạt động tuyệt vời, nhưng màu sắc nên là một CGColor
, không phải UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Tôi tin rằng các câu trả lời trên là dành cho các phiên bản trước của Swift. Tôi đã googled một chút và đoạn mã dưới đây hoạt động cho Swift 4. Chỉ cần chia sẻ nó cho bất cứ ai nó có thể có lợi.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Chúc mừng mã hóa!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
để lập trình Swift, hãy sử dụng cái này
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
nó gần nhất có thể từ một UITextField ban đầu
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
}
bạn có thể thêm đường viền vào UITextView từ Storyboard - Trình kiểm tra danh tính - Thuộc tính thời gian chạy do người dùng xác định
Kể từ iOS 8 và Xcode 6, bây giờ tôi thấy giải pháp tốt nhất là phân lớp UITextView và đánh dấu lớp con là IB_DESIGNABLE, cho phép bạn xem đường viền trong bảng phân cảnh.
Tiêu đề:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Thực hiện:
#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
Sau đó, chỉ cần kéo UITextView của bạn trong bảng phân cảnh và đặt lớp của nó thành BorderTextView
Điều làm cho nó hoạt động (ngoài việc làm theo các câu trả lời ở đây) là thêm borderStyle
thuộc tính:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Trong Swift 3, bạn có thể sử dụng hai dòng sau:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Tôi đã giải quyết vấn đề này trong bảng phân cảnh bằng cách đặt một khuyết tật hoàn toàn UIButton
phía sau UITextView
và tạo màu nền của UITextView
ClearColor. Điều này hoạt động mà không yêu cầu thêm mã hoặc gói.