【发布时间】:2015-08-20 05:35:31
【问题描述】:
我为此案例制作了一个特殊的测试应用程序。 (很抱歉它已经被删除了)
我在Storyboard 中的控制器视图上添加了一个视图,在Interface Builder 中设置了AutoLayout 约束,并使其中一个(垂直空间)对于不同的尺寸类是不同的。 Screenshot from IB
所以Any height, Any width 的值为 100,Regular height, Regular width 的值为 0。
效果很好,在 iPhone 上与顶部的垂直距离为 100,而在 iPad 上为 0。
我还为此约束创建了IBOutlet,并希望在运行时将其更改为 10
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topVerticalConstraint;
看来我无法更改它,因为它没有效果
- (void)viewDidLoad
{
[super viewDidLoad];
self.topVerticalConstraint.constant = 10; // it doesn't work
}
虽然当我在Interface Builder 中删除Regular height, Regular width 的值时它会起作用。
我错过了一些关于尺码等级的事情吗?
【问题讨论】:
-
你是否在界面构建器中正确绑定了 NSLayoutConstraint 和顶部约束?
-
非常确定约束尚未在 -viewDidLoad 中设置。您是否尝试过更改 -viewDidLayoutSubviews 中的约束?
-
@UtsavParikh 当然。相同的项目示例效果很好,当我在
Interface Builder中删除w R h R的约束时。 -
@NKorotkov 是的,替换为 -viewDidLayoutSubviews 有帮助。非常感谢。您的意思是,该属性为空还是尚未应用于查看?
-
@Sander 属性不为零,但您在 -viewDidLoad 中对其所做的更改将被 IB 中设置的参数覆盖。
标签: ios autolayout interface-builder nslayoutconstraint size-classes