向具有动态高度的TextView
添加底线边框的最佳方法是什么?
我试过这个:
func addBottomBorderWithColor(color: UIColor, width: CGFloat) {
let border = CALayer()
border.backgroundColor = color.CGColor
border.frame = CGRectMake(0, self.frame.size.height - width,
self.frame.size.width, width)
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
7条答案
按热度按时间a6b3iqyw1#
Swift 4版本
jxct1oxe2#
我想了很多关于我最初的解决方案。
如果你要子类化
UITextView
来添加一个底线,那么底线最好是文本视图本身的子视图,而不是它的超级视图的子视图。最后,我提出了一个解决方案,可以将bottom line作为
TextView
本身的子视图添加,并且当用户滚动TextView
的文本时,bottom line不会移动。在视图控制器中,您还可以动态地改变TextView
的框架,并且bottom line也会粘在底部。下面是参考代码:
TextView
初始化代码:?
、!
。代码中的
self
是否表示TextView
?如果是这样,当您添加
border
作为TextView
的子层时,当用户滚动TextView
的文本时,border
将上下移动。尝试添加
border
作为TextView
的超级视图的子层,而不是TextView
本身。下面是代码(注意,我将
border
从CALayer
更改为UIView
):下面是捕获:
我建议你把第二个参数名从width改为height,因为width在这里是不明确的。
bpzcxfmw3#
使用以下行效果更好:
边框.自动调整大小蒙版= [.flexibleWidth,.flexibleHeight]
wkyowqbh4#
我尝试过其他的答案,它们要么很难实现,要么有bug,但是,我发现了一个简单,也许是最好的方法来实现这一点:
只需在
UITextView
旁边添加一个UIView
,高度为1(也可以选择2),设置约束,确保UIView
在UITextView
之上。所有这些都可以在情节串连图板中实现,因此我在这里不提供代码,因为这个
UIView
可以替换为UIImageView,如果愿意,您可以向您的UITextView
添加mustache:)
hmmo2u0o5#
将bounds的掩码设置为false,则仅显示要显示的行的边界。
58wvjzkj6#
尝试以下代码,它可能会帮助您
qnzebej07#
有时候让事情彼此独立一点会更容易。