我想有一个细的灰色边框周围的 UITextView。我查看了苹果的文档,但没有发现任何财产。请帮帮我。
UITextView
#import <QuartzCore/QuartzCore.h> .... // typically inside of the -(void) viewDidLoad method self.yourUITextView.layer.borderWidth = 5.0f; self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
工程伟大,但颜色应该是 CGColor,而不是 UIColor:
CGColor
UIColor
view.layer.borderWidth = 5.0f; view.layer.borderColor = [[UIColor grayColor] CGColor];
加入以下圆角:
self.yourUITextview.layer.cornerRadius = 8;
我添加 UIImageView作为 UITextView的子视图。这与 UITextField上的本机边界相匹配,包括从上到下的渐变:
UIImageView
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 表示:
@ 1x
@ 2x
我在情节串连板中解决了这个问题,在 UITextView后面放置了一个完全禁用的 UIButton,并使 UITextView的背景颜色为 clear Color。这不需要额外的代码或包就可以工作。
UIButton
下面是我使用的代码,用于在 TextView控件周围添加一个名为“ tbComments”的边框:
TextView
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor]; self.tbComments.layer.borderWidth = 1.0; self.tbComments.layer.cornerRadius = 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
使它工作的事情(除了下面的答案)是添加 borderStyle属性:
borderStyle
#import <QuartzCore/QuartzCore.h> .. phoneTextField.layer.borderWidth = 1.0f; phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor]; phoneTextField.borderStyle = UITextBorderStyleNone;
快速编程,用这个
tv_comment.layer.borderWidth = 2 tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 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 }
只是个小小的补充。如果边框稍微宽一点,就会影响文本的左右两边。为了避免这种情况,我添加了以下内容:
self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);
在 Swift 3中,您可以使用以下两行:
myText.layer.borderColor = UIColor.lightGray.cgColor myText.layer.borderWidth = 1.0
我相信以上的答案是针对以前版本的 Swift 的。我谷歌了一下,下面的代码为 Swift 4工作。只是分享给任何可能受益的人。
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor self.textViewName.layer.borderWidth = 1.0 self.textViewName.layer.cornerRadius = 8
编码愉快!
您可以通过 Storyboard-Identity spector-User DefiedRuntime 属性向 UITextView 添加边框
一个优雅的解决方案是在底部插入一个真正的 UITextField,并防止它与内容一起滚动。这样你甚至有正确的黑暗模式边界。
class BorderedTextView: UITextView { let textField = UITextField() required init?(coder: NSCoder) { super.init(coder: coder) insertTextField() } override init(frame: CGRect, textContainer: NSTextContainer?) { super.init(frame: frame, textContainer: textContainer) insertTextField() } convenience init() { self.init(frame: .zero, textContainer: nil) } private func insertTextField() { delegate = self textField.borderStyle = .roundedRect insertSubview(textField, at: 0) } override func layoutSubviews() { super.layoutSubviews() textField.frame = bounds } } extension BorderedTextView: UITextViewDelegate { func scrollViewDidScroll(_ scrollView: UIScrollView) { textField.frame = bounds } }