13

内部に単純な UIViewController を含む UIPageViewController があります。

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 内に含まれている場合にのみ発生します。

4

4 に答える 4

0

@退屈な宇宙飛行士の答えはほとんどうまくいきました。自動サイズ変更マスクを残して自動レイアウト制約に変換する以外に私がした唯一のことはUIPageViewController、親ビューに追加する前にビューフレームを設定することです。

[self addChildViewController:pageViewController];
pageViewController.view.frame = self.view.frame;
[self.view addSubview:pageViewController.view];
[pageViewController didMoveToParentViewController:self];

フレームを設定しないと、子ビュー コントローラーが表示され、どの方向でも正しく配置されますが、サブビューは適切にレイアウトされません。

于 2016-06-16T15:35:00.300 に答える