如果我将一个UITableView约束到viewController的viewDidLoad()中的超级视图,一切都很完美。
但是,如果我尝试将tableView限制在layoutGuide的顶部,如下所示:
var gulp = require('gulp'),
connect = require('gulp-connect');
gulp.task('webserver', function() {
connect.server({
livereload: true
});
});
gulp.task('default', ['webserver']);
我收到此错误:
// tableView.top = view.top
myConstraint =[NSLayoutConstraint
constraintWithItem:theTableView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0];
myConstraint.identifier = @"tableView.top = layoutguide.bottom";
[self.view addConstraint:myConstraint];
我尝试将所有约束移动到viewController的 - (void)updateConstraints方法中,并且消除了运行时错误,并且正确地呈现了视图,但是,当我旋转设备时,视图没有正确更新。
有谁能告诉我写这个约束的正确位置?
谢谢!
答案 0 :(得分:0)
Try to call your updateConstraints to viewDidAppear and add this line before calling method
tableView.translatesAutoresizingMaskIntoConstraints = NO;
So your viewDidAppear method will be like
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self updateConstraints];
}
这会对你有帮助。