我想要一个多行文本输入字段,其外观为带衬纸,每个输入行的下方都有一个下划线,文本将跨越视图的宽度。
这是我想要的设计。行数可能会改变。
我考虑过:
这些声音对我来说都没有理智,所以我正在寻找可以让我指向正确方向的其他想法。
答案 0 :(得分:2)
您可以使用CoreGraphics绘制线条:
class UnderlinedTextView: UITextView {
var lineHeight: CGFloat = 13.8
override var font: UIFont? {
didSet {
if let newFont = font {
lineHeight = newFont.lineHeight
}
}
}
override func draw(_ rect: CGRect) {
let ctx = UIGraphicsGetCurrentContext()
ctx?.setStrokeColor(UIColor.black.cgColor)
let numberOfLines = Int(rect.height / lineHeight)
let topInset = textContainerInset.top
for i in 1...numberOfLines {
let y = topInset + CGFloat(i) * lineHeight
let line = CGMutablePath()
line.move(to: CGPoint(x: 0.0, y: y))
line.addLine(to: CGPoint(x: rect.width, y: y))
ctx?.addPath(line)
}
ctx?.strokePath()
super.draw(rect)
}
}
答案 1 :(得分:0)
添加textview委托,然后在确认到UITextViewDelegate委托后使用此
func scrollViewDidScroll(_ scrollView: UIScrollView) {
yourTextView.setNeedsDisplay()
}
希望有帮助!