我有一个带标签栏的项目,以及每个标签的自定义导航栏。每个导航栏UIViews都在故事板中设置了高度约束常量。
我想将这个NSLayoutConstraint(导航高度)子类化,以便它改变iPhone X的高度。导航栏需要在iPhone X上更高,因为我没有使用& #34;开箱即用"对象,我的约束需要手动设置。
基本上,我想在子类中执行类似下面的操作,因此我不必重复一堆代码并制作不必要的插件:
override func viewWillLayoutSubviews() {
navBarHeightConstraint.constant = navBarHeightConstraintConstant()
}
func navBarHeightConstraintConstant() -> CGFloat {
switch(UIScreen.main.bounds.height) {
case 812: // iPhone X
return 90
default: // all others
return 64
}
}
我创建了子类,但不知道用于执行上述代码的方法。
class NavHeightFixiPhoneXConstraint: NSLayoutConstraint {
// Nothing... yet!
}
如何将NSLayoutConstraint子类化,以便仅为iPhone X显示特定值?
答案 0 :(得分:5)
您可以覆盖常量变量:
class NavHeightFixiPhoneXConstraint: NSLayoutConstraint {
override var constant: CGFloat {
set {
super.constant = newValue
}
get {
return navBarHeightConstant()
}
}
fileprivate func navBarHeightConstant() {
switch (UIScreen.main.bounds.height) {
case 812:
return 90
default:
return 64
}
layoutIfNeeded()
}
}