我有一个 UIPageViewController,里面有一个简单的 UIViewController。
如果 UIViewController 没有子视图,则其视图在旋转时会正确调整大小。(纯绿色背景)。
如果 UIViewController 有一个带有固定框架的子视图,则其视图在旋转时会正确调整大小。(实心绿色背景,角落有黄色方块)。
如果 UIViewController 有一个子视图,其自动布局约束设置为填充其父视图,则其视图在旋转时不再正确调整大小。(UIPageViewController 的红色背景可见的纯黄色背景)。我使用的自动布局代码是:
UIView *v = [[UIView alloc] init];
[v setTranslatesAutoresizingMaskIntoConstraints:NO];
[v setBackgroundColor:[UIColor yellowColor]];
[[self view] addSubview:v];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(v);
NSArray *cs = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[v]|" options:0 metrics:nil views:viewsDictionary];
[[self view] addConstraints:cs];
cs = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v]|" options:0 metrics:nil views:viewsDictionary];
[[self view] addConstraints:cs];
为什么子视图的自动布局会影响其父视图?仅当它包含在 UIPageViewController 中时才会发生这种情况。