Я создаю подклассы UINavigationBar
, и в конструкторе интерфейсов я использую Identity Inspector, чтобы установить его как класс NavigationBar
моего UINavigationController
. проблема в том, что когда я переопределяю метод рисования, нижняя граница моего navigationBar
исчезает. Это мой код:
class YC_NavigationBar: UINavigationBar {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.backIndicatorImage = UIImage(named: "TopBar_Button_Back")!.withRenderingMode(.alwaysOriginal)
self.backIndicatorTransitionMaskImage = UIImage(named: "TopBar_Button_Back")!.withRenderingMode(.alwaysOriginal)
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -200.0), for: .default)
}
override func draw(_ rect: CGRect) {
super.draw(rect)
for i in self.subviews {
if NSStringFromClass(i.classForCoder) == "_UINavigationBarContentView" {
for j in i.subviews {
for constraint in j.constraints {
if constraint.firstAttribute == .leading && NSStringFromClass(constraint.firstItem!.classForCoder) == "_UIModernBarButton" {
constraint.constant = 0
break
}
}
if NSStringFromClass(j.classForCoder) == "_UIButtonBarStackView" {
let ctr = NSLayoutConstraint(item: j, attribute: .trailing, relatedBy: .equal, toItem: i, attribute: .trailing, multiplier: 1, constant: 0)
i.addConstraint(ctr)
}
}
break
}
}
}
}
Это так нелепо, что происходит, просто отвергая этот метод. Как я могу решить эту проблему?