有边框的UITextView

时间:2010-04-15 16:31:58

标签: ios quartz-core

我希望UITextView周围有一个细灰色边框。我已经浏览了Apple文档,但在那里找不到任何属性。请帮忙。

15 个答案:

答案 0 :(得分:302)

#import <QuartzCore/QuartzCore.h>

....

// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];

答案 1 :(得分:42)

为圆角添加以下内容:

self.yourUITextview.layer.cornerRadius = 8; 

答案 2 :(得分:21)

这是我使用的代码,用于在名为&#34; tbComments&#34;的TextView控件周围添加边框。 :

self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;

这就是它的样子:

enter image description here

轻松自负。

答案 3 :(得分:19)

我添加UIImageView作为UITextView的子视图。这与UITextField上的原生边框相匹配,包括从上到下的渐变:

enter image description here

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

enter image description here

答案 4 :(得分:18)

效果很好,但颜色应该是CGColor,而不是UIColor

view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];

答案 5 :(得分:4)

对于Swift编程,请使用此

tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor

答案 6 :(得分:2)

这与原始的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
}

答案 7 :(得分:1)

我相信以上答案适用于Swift的早期版本。我用Google搜索了一下,下面的代码适用于Swift4。只要与可能受益的人共享它即可。

self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0;
self.textViewName.layer.cornerRadius = 8;

快乐编码!

答案 8 :(得分:1)

您可以从情节提要-Identity Inspector-用户定义的运行时属性向UITextView添加边框

enter image description here

答案 9 :(得分:0)

从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

答案 10 :(得分:0)

让它发挥作用的事情(除了在此处提供答案之外)还添加了borderStyle属性:

#import <QuartzCore/QuartzCore.h>
..

phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;

答案 11 :(得分:0)

只是一小部分。如果使边框更宽,则会干扰文本的左侧和右侧。为避免这种情况,我添加了以下行:

self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);

答案 12 :(得分:0)

在Swift 3中,您可以使用以下两行:

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0

答案 13 :(得分:0)

一个优雅的解决方案是在底部插入一个真正的 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
  }
}

答案 14 :(得分:-3)

我通过在UIButton后面放置一个完全禁用的UITextView并制作UITextView clearColor的背景颜色,在故事板中解决了这个问题。这不需要额外的代码或包。