2013-06-27 24 views
9

tôi là tạo ra hệ thống phân cấp quan điểm của tôi lập trình như thế này:Thiết lập ràng buộc bố cục tự động cho phân cấp chế độ xem có lập trình?

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

Hai VC được nạp từ của XIB rằng trong cả hai trường hợp sử dụng autolayout. Tất cả mọi thứ có vẻ tốt nhưng khi tôi thực sự làm một po [[UIWindow keyWindow] _autolayoutTrace] tôi nhận được một số đáng lo ngại AMBIGUOUS LAYOUT cảnh báo trong giao diện điều khiển:

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

Vì vậy, câu hỏi của tôi là, làm thế nào để thoát khỏi họ? Hoặc thường được xây dựng hơn, bạn làm cách nào để thiết lập cửa sổ và xem cấu trúc phân cấp bằng cách sử dụng bố cục tự động?

Tôi thấy tài liệu rất mơ hồ về vấn đề thiết lập cửa sổ theo lập trình. Và mặc dù tôi đã xem tất cả ba video về WWDC về vấn đề này nhưng tôi không thể hiểu được cách thực hiện điều này.

EDIT: Nó xuất hiện như những vấn đề tôi đang gặp phải chỉ liên quan đến iOS mới 7. Vì nó thuộc NDA tôi sẽ chuyển cuộc thảo luận này sang Diễn đàn nhà phát triển Apple được chỉ định.

Trả lời

1

AMBIGUOUS LAYOUT có nghĩa là bạn chưa chỉ định đủ để Bố cục tự động biết cách bố trí chế độ xem của bạn. Nói cách khác, những gì bạn đã chỉ định là một chút mơ hồ.

Điều này hoàn toàn khác với các ràng buộc bị hỏng, trong đó bạn có hai hoặc nhiều ràng buộc để cho Bố cục tự động thực hiện các việc khác nhau.

Với bố cục không rõ ràng, Bố cục tự động sẽ thử để tìm hiểu ý bạn muốn làm. Hy vọng rằng đó sẽ là những gì bạn muốn, nhưng nó không được đảm bảo. Do đó cảnh báo.

Câu trả lời này không thực sự là nơi để cho bạn biết cách bắt đầu. Nhưng may mắn thay giờ đây, nhiều tài nguyên Bố cục tự động hơn đang xuất hiện.

Có sách iOS Auto Layout Demystified. Mặc dù tôi đã mua nó, tôi chưa có cơ hội để đọc nó. Nó trông khá tốt mặc dù.

Ngoài ra, hãy xem bài viết xuất sắc của Ole Begemann 10 Things You Need To Know About Cocoa Autolayout.

Để biết hướng dẫn bắt đầu, hãy xem Ray wenderlich's Beginning Auto Layout in iOS 6: Part 1/2. Cuối cùng, nếu tôi có thể nói rằng mỗi lần có một bố cục Tự động giúp tôi đặt cờ setTranslatesAutoresizingMaskIntoConstraints thành NO cho các chế độ xem mà tôi tạo theo chương trình mà tôi muốn sử dụng Bố cục Tự động. Giữ điều đó trong tâm trí của bạn khi bạn thấy bất kỳ trường hợp ngoại lệ ràng buộc tìm kiếm whacky trên bàn điều khiển.

+0

Tôi hiểu triết lý chung và cách gỡ lỗi, nhưng câu hỏi của tôi liên quan đến cách tôi xây dựng hệ thống phân cấp khung nhìn từ đầu trong mã. Tôi không thể treo lên UIWindow của tôi để nó siêu xem vì nó không có. – ABeanSits

Các vấn đề liên quan