2017-01-05 3 views
3

Мне нужно многострочное поле ввода текста с появлением выровненной бумаги, где каждая строка ввода имеет подчеркивание внизу, где текст будет охватывать ширину вида.Как сделать многослойный, подчеркнутый UITextView/UITextField?

Например: example image

Это дизайн я хочу сделать. Количество строк может измениться.

Я считал:

  • Использование UITextView и размещения облицованный фон.
  • Использование TextField и подчеркивание каждого текстового поля.

Ни один из этих звуков не подходит для меня, поэтому я ищу другие идеи, которые могли бы заставить меня указывать в правильном направлении.

+0

Что о Tableview? – Amanpreet

+0

Да, похоже, что тарелка может быть способом. Вы хотите, чтобы пользователь мог напрямую редактировать текст? –

+0

@Amanpreet это ячейка одного 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

Спасибо, помощник. Попробует это попробовать. – rv7284

+0

Работает отлично. – rv7284

Смежные вопросы