调用NSLayoutConstraint的子类&#c; c常量变量

时间:2018-01-31 07:01:48

标签: ios subclass swift4 nslayoutconstraint

我创建了一个自定义类CREATE VIEW .... AS。我必须根据iOS版本更新顶部约束的常量值。但是NSLayoutConstraint的常量变量不会被调用。我已经尝试了很多方法,但它没有被调用。以下是我的NSLayoutConstraint自定义类的代码:

NSLayoutConstraint

我创建了一个TableView顶级约束的IBOutlet,并为其分配了自定义类。

1 个答案:

答案 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:使用状态栏的固定值是代码气味。请使用相应的布局指南,例如safeAreaLayoutGuidetopLayoutGuide等。