UITableView 调整大小并在旋转时自动布局

Mar*_*vec 5 rotation uitableview ios autolayout

我有一些奇怪的错误,我找不到解决方案。

我有使用自动布局的 UITableView。(在所有 4 个边上对齐到父级)。如果我旋转设备,它会正确呈现,但是如果我尝试滚动它,它会在屏幕左侧单独滚动。

在此处输入图片说明

红色方块是滚动区域。

我认为与此相关的下一个问题是当我尝试将 UIView 作为子视图添加到 UITableView 时。

如果我添加:

CGRect frame = CGRectMake(0, 200, self.table.frame.size.width, 5);
UIView * mainView = [[UIView alloc]initWithFrame:frame];
mainView.backgroundColor = [UIColor redColor];
[self.table addSubview:mainView];
Run Code Online (Sandbox Code Playgroud)

没关系,但如果我喜欢:

UIView * mainView = [[UIView alloc]init];
mainView.backgroundColor = [UIColor redColor];
mainView.translatesAutoresizingMaskIntoConstraints = NO;
[self.table addSubview:mainView];

[self.table addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(200)-[mainView(20)]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(_table, mainView)]];

[self.table addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[mainView]|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(_table, mainView)]];
Run Code Online (Sandbox Code Playgroud)

得到 na 错误:

*** Assertion failure in -[UITableView layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2903.23/UIView.m:8540
Run Code Online (Sandbox Code Playgroud)

bha*_*ari 2

对于打开的自动布局 - (不要设置任何框架 - 它会产生奇怪的行为)
您的自动布局约束应如下所示:


您的自动布局已打开

您的自动布局已打开


你的约束应该是这样的

如果您关闭自动布局,则不需要对故事板或代码进行任何更改