我想要一个带有衬纸的多行文本输入字段,其中每个输入行的下方都有一个下划线,文本将跨越视图的宽度.
这是我想要的设计.行数可能会改变.
我考虑过:
>使用UITextView并放置带衬里的背景.
>使用TextField并为每个textField加下划线.
这些声音对我来说都不合理,所以我正在寻找可以让我指向正确方向的其他想法.
最佳答案 您可以使用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)
}
}