uikit——Auto Layout——UIView——constraint

来源:互联网 发布:思迅天店软件好不好 编辑:程序博客网 时间:2024/06/14 07:13

constraint

// Installing Constraints/* A constraint is typically installed on the closest common ancestor of the views involved in the constraint.  It is required that a constraint be installed on _a_ common ancestor of every view involved.  The numbers in a constraint are interpreted in the coordinate system of the view it is installed on.  A view is considered to be an ancestor of itself. */@interface UIView (UIConstraintBasedLayoutInstallingConstraints)@property(nonatomic,readonly) NSArray<__kindof NSLayoutConstraint *> *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<__kindof NSLayoutConstraint *> *)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<__kindof NSLayoutConstraint *> *)constraints NS_AVAILABLE_IOS(6_0); // This method will be deprecated in a future release and should be avoided.  Instead use +[NSLayoutConstraint deactivateConstraints:].@end
解释:
  • constraint通常关联着两个UI对象,假设两个UI对象closest common ancestor为ancestor,ancestor就是constraint拥有者
  • 如果两个UI对象无common ancestor,add不成功,remove不属于receiver的constraint直接ignored,不会crash
  • auto layout计算constraint时以拥有该constraint的view坐标系为参考坐标系
  • iOS 8.0及以后,弃用这些方法了,通过设置active属性代替调用view的addConstraint和removeConstraint,设置active属性能自动把constraint add到correct view和自动把constraint从correct view remove
原创粉丝点击