表格视图在重新定向后移动

时间:2013-06-01 20:50:13

标签: uitableview autolayout landscape-portrait nslayoutconstraint

我正在使用autolayout,我将选项前导空间设置为superview(常量0),将空间设置为superview(常量0),并将水平居中设置为表视图中的supeview。

即使从横向模式返回时,表视图变得可移动,你可以拖动它我似乎没有附加到superview的边缘,似乎发生这种情况因为表视图更宽横向模式,当它回到纵向模式时,表格视图右侧有一些空白房间,以填补空间不再是偶然的。

我在每个重新定位中调用此代码:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [General addLeftRightConstraintsToView:_detail1TableView inRelationToSuperview:self.navigationController.view];
}

这是我用来更新布局约束的类方法:

+ (void)addLeftRightConstraintsToView:(UIView *)view inRelationToSuperview:(UIView *)superview
{

    // Left Space to Superview
    NSLayoutConstraint *leftSpaceConstraint =
    [NSLayoutConstraint constraintWithItem:view
                             attribute:NSLayoutAttributeLeft
                             relatedBy:NSLayoutRelationEqual
                                toItem:superview
                             attribute:NSLayoutAttributeLeft
                            multiplier:1.0
                              constant:0.0];

    // Right Space to Superview
    NSLayoutConstraint *rightSpaceConstraint =
    [NSLayoutConstraint constraintWithItem:view
                             attribute:NSLayoutAttributeRight
                             relatedBy:NSLayoutRelationEqual
                                toItem:superview
                             attribute:NSLayoutAttributeRight
                            multiplier:1.0
                              constant:0.0];

    [superview addConstraint:leftSpaceConstraint];
    [superview addConstraint:rightSpaceConstraint];

}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这有效:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [_details2TableView reloadData];
}