Я пытаюсь применить одну нижнюю границу к текстовому полю, который находится внутри одного из моих collectionViewCells. Вот код:Одиночная граница для UITextField в UIcollectionViewCell (быстрый x xode)
class AddressCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
func basicTextField(placeHolderString: String) -> UITextField {
let textField = UITextField()
textField.font = UIFont.boldSystemFont(ofSize: 12)
textField.attributedPlaceholder = NSAttributedString(string: placeHolderString, attributes:[NSForegroundColorAttributeName: UIColor.lightGray, NSFontAttributeName: UIFont.boldSystemFont(ofSize: 12)])
textField.backgroundColor = UIColor.white
textField.translatesAutoresizingMaskIntoConstraints = false
return textField
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupViews() {
backgroundColor = UIColor.white
layer.addBorder(edge: UIRectEdge.bottom, color: .black, thickness: 0.5)
let streetTextfield = basicTextField(placeHolderString: "street")
addSubview(streetTextfield)
}
}
Я использую расширение, которое позволяет мне применять единую границу, которая работала большой до сих пор:
extension CALayer {
func addBorder(edge: UIRectEdge, color: UIColor, thickness: CGFloat) {
let border = CALayer()
switch edge {
case UIRectEdge.top:
border.frame = CGRect.init(x: 0, y: 0, width: frame.width, height: thickness)
break
case UIRectEdge.bottom:
border.frame = CGRect.init(x: 0, y: frame.height - thickness, width: frame.width, height: thickness)
break
case UIRectEdge.left:
border.frame = CGRect.init(x: 0, y: 0, width: thickness, height: frame.height)
break
case UIRectEdge.right:
border.frame = CGRect.init(x: frame.width - thickness, y: 0, width: thickness, height: frame.height)
break
default:
break
}
border.backgroundColor = color.cgColor;
self.addSublayer(border)
}
}
Когда я просто добавляю borderWidth к текстовому полю следующим образом:
textField.layer.borderWidth = 0.5
Я получаю границу, и она отлично выглядит. Однако, когда я применяю расширение для добавления нижней границы, например:
textField.layer.addBorder(edge: UIRectEdge.bottom, color: .black, thickness: 0.5)
По какой-то причине граница не применяется.
Где вы звоните 'textField.layer.addBorder (край: UIRectEdge.bottom, цвет: .black, толщина: 0,5)'? – thexande