当我在文本字段中添加占位符时,我的应用程序在ios7中崩溃,同样在ios8中工作正常。使用自动布局以编程方式添加控件
根据建议,我在[self.view layoutIfNeeded];
委托方法的末尾添加了viewDidLayout
,但应用程序仍然崩溃,并出现以下异常
断言失败由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'执行-layoutSubviews后仍需要自动布局。 UITextField的-layoutSubviews实现需要调用super。'
答案 0 :(得分:0)
以编程方式添加约束非常重要。您不应该在其中一个布局方法回调中添加它们(例如layoutSubviews
或viewdidLayoutSubviews
)。这是因为在调用这些方法之后系统应该具有视图布局,并且如果在已经布置视图并且需要新的布局周期之后添加新约束,则会发生崩溃。
我建议您考虑另一种可以添加新约束的方法。如果没有其他适合您的地方,请尝试在调用super
方法之前添加约束,而不是相反。
这样的事情:
- (void)viewDidLayoutSubviews {
// Add constraints
[super viewDidLayoutSubviews];
}
如果您可以发布一些代码,我会非常乐意为您提供进一步的帮助:)