我创建了一个自定义类CREATE VIEW .... AS
。我必须根据iOS版本更新顶部约束的常量值。但是NSLayoutConstraint
的常量变量不会被调用。我已经尝试了很多方法,但它没有被调用。以下是我的NSLayoutConstraint自定义类的代码:
NSLayoutConstraint
我创建了一个TableView顶级约束的IBOutlet,并为其分配了自定义类。
答案 0 :(得分:0)
您已在上面的代码中不正确地覆盖了属性常量。如果您为constant
分配值,则您的实现可能会返回不同的值。此外,您无法知道NSLayoutConstraint
是否使用getter或ivar来访问constant
的值。覆盖外国类的属性是非常不安全的,特别是如果它们来自Apple。
此处不需要对NSLayoutConstraint
进行子类化。你应该在非常罕见的情况下这样做。您可以使用普通约束。如果您的约束出口变量为topConstraint
,则可以使用
if #available(iOS 11.0, * ) {
topConstraint.constant = 0.0
}
else {
topConstraint.constant = -20.0
}
viewDidLoad
中的。
BTW:使用状态栏的固定值是代码气味。请使用相应的布局指南,例如safeAreaLayoutGuide
,topLayoutGuide
等。