带边框的UITextView

134

我想在一个UITextView周围加上细灰色的边框。我已经查阅了苹果的文档,但未能找到任何属性。请帮忙。

15个回答

0

只是一个小的补充。如果你把边框加宽一点,它会干扰到文本的左右两侧。为了避免这种情况,我添加了以下行:

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

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
  }
}

UITextView在包含它的视图控制器被呈现时是否显示边框?即使我在viewWillAppear()中将UITextView layer.borderColor的值设置为UIColor.black.CGColor和layer.borderWidth设置为1.0,它仍然没有显示出来。 - daniel

0
添加borderStyle属性使其正常工作(除了按照这里的答案)。
#import <QuartzCore/QuartzCore.h>
..

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

0
在Swift 3中,您可以使用以下两行代码:
myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0

-3
我通过在Storyboard中放置一个完全禁用的UIButton并将UITextView的背景颜色设置为clearColor来解决了这个问题。 这样可以在不需要额外的代码或包的情况下完成工作。

3
当然,在iOS 7中这不起作用,因为按钮没有边缘(现在按钮看起来像标签)。 - Mike Gledhill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接