2015-04-28 12 views
9

Theo tệp tiêu đề UIView.h, các phương pháp bên dưới sẽ không được chấp nhận.Thay thế cho phương thức tự động trả lời của UIView không được dùng nữa

Cách thay thế để làm việc với tính năng tự động hoàn thành trong mã là gì?

Tôi không thấy các phương pháp được đề xuất trong nhận xét mã thay thế các đối tác hiện tại của chúng như thế nào khi chúng hoạt động trên ràng buộc thực tế chứ không phải về mối quan hệ giữa UIView và ràng buộc.

@interface UIView (UIConstraintBasedLayoutInstallingConstraints) 

- (NSArray *)constraints NS_AVAILABLE_IOS(6_0); 

- (void)addConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); // This method will be deprecated in a future release and should be avoided.  Instead, set NSLayoutConstraint's active property to YES. 
- (void)addConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); // This method will be deprecated in a future release and should be avoided.  Instead use +[NSLayoutConstraint activateConstraints:]. 
- (void)removeConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); // This method will be deprecated in a future release and should be avoided.  Instead set NSLayoutConstraint's active property to NO. 
- (void)removeConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); // This method will be deprecated in a future release and should be avoided.  Instead use +[NSLayoutConstraint deactivateConstraints:]. 
@end 

Trả lời

8

Các hạn chế tự chứa các mối quan hệ (có nghĩa là, họ chỉ đến xem hoặc quan điểm liên quan đến mối quan hệ), vì vậy cách cũ của thêm các trở ngại đối với một cái nhìn là không cần thiết và đôi khi khó hiểu bởi vì bạn phải chọn chế độ xem phù hợp trong cấu trúc phân cấp để thêm chúng vào.

Theo cách mới, bạn chỉ cần tạo các ràng buộc và đặt thuộc tính active thành YES (cho mục tiêu-C) hoặc true (đối với Swift) và hệ thống thêm nó vào chế độ xem chính xác cho bạn. Nếu bạn có nhiều ràng buộc để thêm, bạn gọi phương thức lớp là activateConstraints: và nó đặt thuộc tính cho bạn.

Với phương pháp cũ, người lập trình có thể thêm các ràng buộc vào chế độ xem chính xác. Nếu bạn có ràng buộc về chế độ xem có liên quan A và chế độ xem B, thì có 3 khả năng nơi để thêm ràng buộc:

  1. Nếu chế độ xem A là chế độ xem con của chế độ xem B (hoặc phân lớp của tiểu sử), thì hạn chế nên được bổ sung để xem B.
  2. Nếu xem B là một subview của quan điểm A (hoặc một subview của một subview), sau đó các hạn chế nên được bổ sung để xem A.
  3. Nếu xem A và điểm B là cả hai chế độ xem phụ của chế độ xem khác (gọi là C), thì ràng buộc phải được thêm vào chế độ xem C.

Với phương pháp mới, bạn chỉ cần đặt thuộc tính active của ràng buộc thành YES/true và hệ thống sẽ tính toán điều này cho bạn. Nó dễ dàng hơn nhiều.

+0

Ý của bạn là "thêm nó vào chế độ xem chính xác cho bạn"? Ý nghĩa dựa trên thuộc tính 'first/secondItem'? –

+0

"Chế độ xem chính xác" phụ thuộc vào vị trí của hai chế độ xem trong cấu trúc phân cấp chế độ xem. Nếu view B là một subview của view A, nó sẽ thêm các ràng buộc để xem A. Nếu view A và B là cả subviews của view khác, nó thêm ràng buộc vào superview của view A và B. – vacawama

+0

Thú vị - để tham khảo, ở đây là một lần viết ngắn: http://ericasadun.com/2014/07/11/beta-auto-layout-constraint-activation/ –

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