2013-06-27 7 views
9

Ich schaffe meine Ansicht Hierarchie programmatisch wie folgt aus:Einrichten von automatischen Layouteinschränkungen für die Hierarchie programmatischer Ansichten?

UIWindow* window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

UIViewController1* viewController1 = [[UIViewController1 alloc] init]; 
UIViewController2* viewController2 = [[UIViewController2 alloc] init]; 

UINavigationController* navigationController = [[UINavigationController alloc] init]; 
[navigationController setViewControllers:@[viewController1, viewController2] animated:NO]; 

[window setRootViewController:navigationController]; 
[window makeKeyAndVisible]; 

Die beiden VC aus XIB der geladen, dass verwenden automatischen Layout in beiden Fällen. Alles sieht gut aus, aber wenn ich tatsächlich einen po [[UIWindow keyWindow] _autolayoutTrace] ich einige beunruhigende AMBIGUOUS LAYOUT Warnungen in der Konsole:

*<UIWindow:0xc63bec0> 
| *<UILayoutContainerView:0xd3d79b0> - AMBIGUOUS LAYOUT 
| | *<UINavigationTransitionView:0xd3d8b60> - AMBIGUOUS LAYOUT 
| | | *<UIViewControllerWrapperView:0xd566c00> - AMBIGUOUS LAYOUT 
| | | | *<UIView:0xc66b290> - AMBIGUOUS LAYOUT 
| | | | | *<UIView:0xc66b0e0> - AMBIGUOUS LAYOUT 
| | | | | | *<MKMapView:0xd504800> - AMBIGUOUS LAYOUT 

Also meine Frage ist, wie kann ich sie los zu werden? Oder allgemeiner ausgedrückt: Wie gehen Sie vor, um Ihr Fenster einzurichten und die Hierarchie mithilfe des automatischen Layouts programmgesteuert anzuzeigen?

Ich finde die Dokumentation sehr vage in Bezug auf die Einrichtung des Fensters programmgesteuert. Und obwohl ich mir alle drei WWDC-Videos zu diesem Thema angesehen habe, konnte ich nicht verstehen, wie ich das anstellen sollte.

BEARBEITEN: Es scheint, als die Probleme, die ich habe, beziehen sich nur auf das neue iOS 7. Da es unter NDA ist, werde ich diese Diskussion zu den designierten Apple Developer Foren verschieben.

Antwort

1

AMBIGUOUS LAYOUT bedeutet, dass Sie nicht genug für Auto Layout angegeben haben, um zu wissen, wie Sie Ihre Ansicht planen. Mit anderen Worten, was Sie angegeben haben, ist ein bisschen vage.

Dies unterscheidet sich ziemlich von unterbrochenen Einschränkungen, bei denen Sie zwei oder mehr Einschränkungen haben, die Auto Layout veranlassen, verschiedene Dinge zu tun.

Mit einem mehrdeutigen Layout wird Auto Layout ausprobieren, um herauszufinden, was Sie vorhatten. Hoffentlich wird das was du willst, aber es ist nicht garantiert. Daher die Warnung.

Diese Antwort ist nicht wirklich der Ort, um Ihnen zu sagen, wie Sie beginnen. Aber glücklicherweise erscheinen jetzt mehr Auto-Layout-Ressourcen.

Es gibt ein Buch iOS Auto Layout Demystified. Obwohl ich es gekauft habe, hatte ich noch keine Gelegenheit es zu lesen. Es sieht aber ziemlich gut aus.

Schauen Sie sich auch Ole Begemann ausgezeichnete Artikel 10 Things You Need To Know About Cocoa Autolayout.

Für das Einstiegs-Tutorial, werfen Sie einen Blick auf Ray wenderlich's Beginning Auto Layout in iOS 6: Part 1/2.

Schließlich, wenn ich sagen kann, dass es eine Auto-Layout-Sache gibt, die mich jedes Mal bekommt, vergißt man, das setTranslatesAutoresizingMaskIntoConstraints Flag auf NO für Ansichten, die ich programmatisch erstellen, dass ich Auto Layout verwenden möchte. Behalten Sie dies im Hinterkopf, wenn Sie irgendwelche Conversion-Ausnahmen auf der Konsole sehen.

+0

Ich verstehe die allgemeine Philosophie und Möglichkeiten des Debuggens, aber meine Fragen beziehen sich darauf, wie ich die Ansichtshierarchie von Grund auf in Code erstellen. Ich kann mein UIWindow nicht mit seiner Superansicht verbinden, da es keine hat. – ABeanSits

Verwandte Themen