根据UIView.h头文件,不推荐使用以下方法。
在代码中使用autolayout的替代方法是什么?
我不知道代码注释中建议的方法如何替换现有的对应方,因为它们处理实际约束而不是UIView与约束之间的关系。
@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
答案 0 :(得分:8)
约束本身包含关系(即,它们指向关系中涉及的视图或视图),因此将约束添加到视图的旧方法是多余的,有时会令人困惑,因为您必须选择正确的视图在层次结构中将它们添加到。
以新方式,您只需创建约束并将其active
属性设置为YES
(对于Objective-C)或true
(对于Swift),系统会将其添加为了正确的观点。如果要添加多个约束,则调用类方法activateConstraints:
并为其设置属性。
使用旧方法,程序员可以将约束添加到正确的视图中。如果你有一个约束所涉及的视图A和视图B,那么有3种可能性来添加约束:
使用新方法,您只需将约束的active
属性设置为YES/true
,系统就会为您解决此问题。它更容易。