Joe*_*Joe 3 subclass ios nslayoutconstraint swift iphone-x
我有一个带有选项卡栏的项目,并且每个选项卡都有一个自定义导航栏。每个导航栏UIView在情节提要中都设置了一个高度限制常数。
我想将此NSLayoutConstraint子类化(用于Nav高度),以便它更改iPhone X的高度。导航栏在iPhone X上需要更高,并且因为我没有使用“开箱即用”的功能对象,我的约束需要手动设置。
本质上,我想在子类中执行以下操作,因此无需重复执行一堆代码并避免不必要的出口:
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
}
}
Run Code Online (Sandbox Code Playgroud)
我已经创建了子类,但是不知道使用什么方法来执行上述代码。
class NavHeightFixiPhoneXConstraint: NSLayoutConstraint {
// Nothing... yet!
}
Run Code Online (Sandbox Code Playgroud)
我如何子类化NSLayoutConstraint以便它仅显示iPhone X的特定值?
您可以覆盖常量变量:
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()
}
}
Run Code Online (Sandbox Code Playgroud)