以编程方式向topLayoutGuide添加约束?

时间:2016-06-03 17:50:08

标签: objective-c uitableview autolayout

如果我将一个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方法中,并且消除了运行时错误,并且正确地呈现了视图,但是,当我旋转设备时,视图没有正确更新。

有谁能告诉我写这个约束的正确位置?

谢谢!

1 个答案:

答案 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];
    }

这会对你有帮助。