2017-01-05 10 views
3

私は複数行のテキスト入力フィールドを、それぞれの入力行にテキストがビューの幅にまたがる下に下線を引いてある、紙のように見えるようにしたいと思います。例えば複数行のアンダーラインのUITextView/UITextFieldを作成するには?

example image

これは私が作りたいデザインです。行数が変わる可能性があります。

私はみなさ:

  • UITextViewを使用して並んで背景を配置します。
  • TextFieldを使用して各textFieldに下線を付ける。

これらの音は私にとってまともではないので、私は正しい方向に向けることができる他のアイデアを探しています。

+0

何テーブルビューについては? – Amanpreet

+0

ええ、それは行くtableviewかもしれないように聞こえる。ユーザーがテキストを直接編集できるようにしますか? –

+0

@Amanpreetこれは1つのUItableviewのセルです。 – rv7284

答えて

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() 

    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) 
    } 
} 
+0

Thanks mate。挑戦的にこれを試すだろう。 – rv7284

+0

完全に動作します。 – rv7284

関連する問題