132

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

4

15 回答 15

312
#import <QuartzCore/QuartzCore.h>

....

// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
于 2010-04-15T22:23:26.877 回答
43

为圆角添加以下内容:

self.yourUITextview.layer.cornerRadius = 8; 
于 2012-02-18T11:02:25.657 回答
26

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

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

这就是它的样子:

在此处输入图像描述

十分简单。

于 2014-04-08T12:10:19.473 回答
19

我添加UIImageViewUITextView. 这匹配 a 上的原生边框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

在此处输入图像描述

于 2012-11-13T03:04:59.467 回答
18

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

view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
于 2011-03-02T02:26:21.383 回答
8

我相信上面的答案是针对以前版本的 Swift 的。我用谷歌搜索了一下,下面的代码适用于 Swift 4。只需将它分享给任何可能受益的人。

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

快乐编码!

于 2019-05-12T12:35:14.470 回答
4

对于 Swift 编程,使用这个

tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
于 2015-03-29T21:34:18.427 回答
3

这与原始 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
}
于 2015-10-29T01:44:02.893 回答
1

您可以从 Storyboard - Identity Inspector - User Defined Runtime Attribute 向 UITextView 添加边框

在此处输入图像描述

于 2020-05-24T13:10:49.097 回答
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

于 2014-10-08T20:08:02.093 回答
0

使它起作用的事情(除了遵循此处的答案)是添加borderStyle属性:

#import <QuartzCore/QuartzCore.h>
..

phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
于 2014-10-27T11:26:10.597 回答
0

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

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0
于 2017-12-27T15:23:12.453 回答
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
  }
}
于 2021-02-15T12:14:42.987 回答
0

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

self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);
于 2016-05-27T02:02:29.587 回答
-3

UIButton我在情节提要中解决了这个问题,方法是在后面放置一个完全禁用的并制作clearColorUITextView的背景颜色。UITextView这无需额外的代码或包即可工作。

于 2013-04-16T18:58:24.587 回答