2013-06-27 9 views
9

は、私はこのようなプログラムで私のビュー階層を作成しています: プログラムによるビュー階層の自動レイアウト制約を設定しますか?

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]; 

2 VC

はXIBの両方のケースで自動レイアウトを使用していることからロードされています。すべてがよさそうだが、私は実際に私がコンソールにいくつかの心配 AMBIGUOUS LAYOUT警告を取得 po [[UIWindow keyWindow] _autolayoutTrace]を行うとき:

*<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 

だから私の質問は、どのように私はそれらを取り除くんですか? より一般的には、自動レイアウトを使用してプログラムでウィンドウを設定し、階層を表示するにはどうしたらよいですか?

私は、プログラムでウィンドウを設定することに関して、ドキュメントが非常に曖昧であることを発見しました。私はこの3つのWWDCビデオをすべて見ていましたが、これをどうやって行うのか把握できませんでした。

EDIT:これは新しいiOS 7にのみ関連している問題として表示されます。NDAの下にあるので、このディスカッションをApple Developer Forumsに移します。

答えて

1

AMBIGUOUS LAYOUTは、レイアウトをレイアウトする方法を自動レイアウトで指定するだけで十分ではないことを意味します。言い換えれば、あなたが指定したのは少し曖昧です。

これは、自動レイアウトにさまざまなことをさせる2つ以上の制約がある壊れた制約とはまったく異なります。

あいまいなレイアウトでは、自動レイアウトはになります。あなたが行うことを理解するためにを試してください。うまくいけばそれがあなたの望むものになりますが、それは保証されません。したがって警告。

この回答は実際に始める方法を教える場所ではありません。しかし、ありがたいことに、より多くのAuto Layoutリソースが現れています。

書籍はiOS Auto Layout Demystifiedです。私はそれを買ったが、私はそれをまだ読む機会がなかった。それはかなりよく見える。

また、Ole Begemannの優れた記事10 Things You Need To Know About Cocoa Autolayoutもご覧ください。

初心者向けのチュートリアルでは、Ray wenderlichのBeginning Auto Layout in iOS 6: Part 1/2をご覧ください。私は私のすべての時間を取得する1つの自動レイアウトのものがあることを言うことができるかどう

最後に、私が自動レイアウトを使用することをプログラムで作成ビューのNOsetTranslatesAutoresizingMaskIntoConstraintsフラグを設定し忘れています。コンソール上でぎこちなく見える制約の例外が見えるときは、それをあなたの頭の中にとどめておいてください。

+0

私は一般的な考え方とデバッグ方法を理解していますが、私の質問はコード内でビュー階層を最初から構築する方法に関係しています。 UIWindowをスーパービューにすることはできません。 – ABeanSits

関連する問題