2016-04-25 94 views
2

所以,我创建了一个UIViewController子类与两个元素:标题UIView和它下面的UITableView。编程布局约束导致旋转不调整基地UIView

---------------- 
||------------|| 
||Header View || 
||------------|| 
||------------|| 
|| Table View || 
||   || 
||   || 
||   || 
||------------|| 
---------------- 

我加入约束在init代码页眉视图和表视图如下:

- (void)setupHeaderView 
{ 
    self.headerView.backgroundColor = [UIColor whiteColor]; 

    self.headerViewTopConstraint = [NSLayoutConstraint constraintWithItem:self.headerView 
                   attribute:NSLayoutAttributeTop 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                   attribute:NSLayoutAttributeTop 
                   multiplier:1.0 
                   constant:0.0]; 
    self.headerViewLeadingConstraint = [NSLayoutConstraint constraintWithItem:self.headerView 
                    attribute:NSLayoutAttributeLeading 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:self.view 
                    attribute:NSLayoutAttributeLeading 
                    multiplier:1.0 
                    constant:0.0]; 
    self.headerViewTrailingConstraint = [NSLayoutConstraint constraintWithItem:self.headerView 
                    attribute:NSLayoutAttributeTrailing 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:self.view 
                    attribute:NSLayoutAttributeTrailing 
                    multiplier:1.0 
                     constant:0.0]; 
    self.headerViewHeightConstraint = [NSLayoutConstraint constraintWithItem:self.headerView 
                    attribute:NSLayoutAttributeHeight 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:nil 
                    attribute:NSLayoutAttributeNotAnAttribute 
                    multiplier:1.0 
                    constant:HeaderViewHeight]; 
} 

- (void)setupTableView 
{ 
    self.tableViewTopConstraint = [NSLayoutConstraint constraintWithItem:self.tableView 
                   attribute:NSLayoutAttributeTop 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.headerView 
                   attribute:NSLayoutAttributeBottom 
                   multiplier:1.0 
                   constant:0.0]; 
    self.tableViewLeadingConstraint = [NSLayoutConstraint constraintWithItem:self.tableView 
                    attribute:NSLayoutAttributeLeading 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:self.view 
                    attribute:NSLayoutAttributeLeading 
                    multiplier:1.0 
                    constant:0.0]; 
    self.tableViewTrailingConstraint = [NSLayoutConstraint constraintWithItem:self.tableView 
                    attribute:NSLayoutAttributeTrailing 
                    relatedBy:NSLayoutRelationEqual 
                     toItem:self.view 
                    attribute:NSLayoutAttributeTrailing 
                    multiplier:1.0 
                    constant:0.0]; 
    self.tableViewBottomConstraint = [NSLayoutConstraint constraintWithItem:self.tableView 
                    attribute:NSLayoutAttributeBottom 
                    relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                    attribute:NSLayoutAttributeBottom 
                   multiplier:1.0 
                    constant:0.0]; 
} 

这两个视图被添加到self.view和由呼叫被preceeded:

self.view.translatesAutoresizingMaskIntoConstraints = NO; 

但是,主要问题是,加载此视图并旋转设备/模拟器时,视图将保持其纵向框架并保持其原点,以使设备窗口处于水平状态, W帧仍是其肖像帧,导致它被屏幕之外,并具有一个空白的黑色空间旁边:提供

截图: Simulator Screenshot

如何维护传播到上海华方位的变化,并在其后的子视图?

+0

....我觉得自己像一个白痴....这工作。谢谢。如果您发表评论,我会将其标记为已回答。 –

回答

2

实际上,您应该将标题和表格视图的translatesAutoresizingMaskIntoConstraints设置为NO

主视图的translatesAutoresizingMaskIntoConstraints值应始终保持为YES

view.translatesAutoresizingMaskIntoConstraints = YES; 
headerView.translatesAutoresizingMaskIntoConstraints = NO; 
tableView.translatesAutoresizingMaskIntoConstraints = NO;