Ich habe einen UIPageViewController mit einem einfachen UIViewController in ihm.UIPageViewController + Auto Layout Rotation Problem
Wenn der UIViewController keine Unteransichten hat, wird die Größe der Ansicht bei Drehung korrekt angepasst. (Fester grüner Hintergrund).
Wenn das der UIViewController eine subview mit einem festen Rahmen hat, ändert die Größe seiner korrekten Darstellung wenn sie gedreht wird. (Fester grüner Hintergrund mit gelbem Quadrat in der Ecke).
Wenn das der UIViewController eine subview mit seinem automatischen Layoutbeschränkungen eingestellt hat seine Super zu füllen, wird die Größe ihrer Ansicht nicht mehr richtig, wenn sie gedreht. (Durchgehender gelber Hintergrund mit dem roten Hintergrund des UIPageViewControllers sichtbar). Die Auto-Layout-Code ich benutze, ist:
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];
Warum sollte das Auto Layout eines subview seine Superview beeinflussen? Dies geschieht nur, wenn es in einem UIPageViewController enthalten ist.
Hey Senior - Ich habe genau das gleiche Problem in Ihrer Frage beschrieben. Könnten Sie mit dieser Antwort einen kleinen Beispielcode bereitstellen? Ich mache alles mit Auto-Layout über die Visual Format Language (genau wie du), und wenn ich rotiere, macht meine UIPageViewController genau das, was Sie getan haben. Sie sagten "und setzen die Beschränkungen für das automatische Layout nicht explizit auf seine Ansicht" - wenn Sie den Code dafür bereitstellen könnten, würde es mir immens helfen und eine vollständigere Antwort liefern. Vielen Dank! – DiscDev