Dies scheint zu geschehen, weil UIPageViewController
's Ansicht (die eigentlich eine _UIPageViewControllerContentView
ist) nicht Subviews und Autolayout wie erwartet behandelt (zumindest in iOS 7; es funktionierte gut für mich in iOS 8).
Sie können umgehen, indem Sie nicht automatisches Layout verwenden, aber ich wollte Auto-Layout verwenden, so endete ich meine Ansicht-Controller neu zu erstellen, um das Hinzufügen von Unteransichten zu UIPageViewController
zu vermeiden.
Anstelle der Unterklasse UIPageViewController
habe ich einen Containeransicht-Controller (eine Unterklasse von UIViewController
) mit einem UIPageViewController
als untergeordneten Ansichtscontroller erstellt. Die benutzerdefinierten Teilansichten, die ich ursprünglich in UIPageViewController
hatte, wurden dann zum view
des Containers hinzugefügt. Ich machte auch den Container zur Datenquelle und Delegierten für die UIPageViewController
.
Es gibt einen verwandten Thread, bei dem die Leute den gleichen Assertionsfehler haben, aber mit einem UITableViewCell
: "Auto Layout still required after executing -layoutSubviews" with UITableViewCell subclass. Die meisten Vorschläge dort funktionieren nicht oder sind nicht auf UIPageViewController anwendbar, aber es half mir herauszufinden, warum das Hinzufügen von Subviews mit Auto-Layout möglicherweise ein Problem verursacht.
diese Behauptung Unter der Annahme wegen eines Constraint Konflikt, hast du noch translatesAutoresizingMaskIntoConstraints = NO? –
Ja, ich erinnere mich daran. –
Wird nach der Ausführung von -layoutSubviews auch die Meldung "Auto-Layout ist noch erforderlich?" Angezeigt? – Moonwalkr