2016-09-23 5 views
0

Я пытаюсь создать текстовое поле только с нижней границей. Поле помещается внутри динамической ячейки и создается с помощью раскадровки. Стиль рамки установлен в None. Автоматическая компоновка включена. Линия рисуется в layoutSubviews(). Однако строка не отображается. Не могли бы вы помочь мне исправить это? Thx заранее!Как нарисовать линию под uiTextField внутри uiTableViewCell?

Вот код:

extension UITextField { 

    func drawUnderline() { 
     let underline = CALayer() 
     let underlineWidth = CGFloat(1.0) 
     underline.borderColor = UIColor.black.cgColor 
     underline.frame = CGRect(x: 0, y: self.frame.size.height - underlineWidth, width: self.frame.size.width, height: self.frame.size.height) 
     underline.borderWidth = underlineWidth 
     self.layer.addSublayer(underline) 
     self.layer.masksToBounds = true 
    } 
} 



class TextFieldTableViewCell: UITableViewCell { 

    @IBOutlet weak var editTextField: UITextField! 

    override func awakeFromNib() { 
     super.awakeFromNib() 

    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
    } 

    override func layoutSubviews() { 
     super.layoutSubviews() 
     self.editTextField.drawUnderline() // The line is drawn here 
    } 

} 

ответ

1

Вы можете сделать это из интерфейса Builder.Create UIView с фиксированной высотой = 1 и дают некоторый цвет (черный), убедитесь, равной ширины к TextField, после того, как только подключите ваш UITextField без рамки к этому виду. Так что вертикальное ограничение пространства между текстовым полем и представлением = 0