ios – 如何制作多行,带下划线的UITextView / UITextField?

我想要一个带有衬纸的多行文本输入字段,其中每个输入行的下方都有一个下划线,文本将跨越视图的宽度.

例如:
《ios – 如何制作多行,带下划线的UITextView / UITextField?》

这是我想要的设计.行数可能会改变.

我考虑过:

>使用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)
  }
}
点赞