me encontré con un par de problemas con las respuestas anteriores:
- si se agrega una vista secundaria: Al girar el dispositivo, la frontera no tendrá el marco correcto más
- si se establece la ShadowImage a nil, entonces no se puede personalizar la sombra de la barra de navegación.
Una forma de resolver este sería el uso de diseño automático:
extension UINavigationBar {
func setBottomBorderColor(color: UIColor, height: CGFloat) -> UIView {
let bottomBorderView = UIView(frame: CGRectZero)
bottomBorderView.translatesAutoresizingMaskIntoConstraints = false
bottomBorderView.backgroundColor = color
self.addSubview(bottomBorderView)
let views = ["border": bottomBorderView]
self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[border]|", options: [], metrics: nil, views: views))
self.addConstraint(NSLayoutConstraint(item: bottomBorderView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: height))
self.addConstraint(NSLayoutConstraint(item: bottomBorderView, attribute: .Bottom, relatedBy: .Equal, toItem: self, attribute: .Bottom, multiplier: 1.0, constant: height))
return bottomBorderView
}
}
La razón por la que vuelvo la frontera es que durante la rotación usted lo ve en el medio de la navigation bar
, así que lo oculta durante la rotación.
genial! Esto funciona para mí :) ¡Gracias! – Zhen