layout guide manage
@interface UIView (UILayoutGuideSupport)
/* UILayoutGuide objects owned by the receiver.
*/
@property(nonatomic,readonly,copy) NSArray<__kindof UILayoutGuide *> *layoutGuides NS_AVAILABLE_IOS(9_0);
/* Adds layoutGuide to the receiver, passing the receiver in -setOwningView: to layoutGuide.
*/
- (void)addLayoutGuide:(UILayoutGuide *)layoutGuide NS_AVAILABLE_IOS(9_0);
/* Removes layoutGuide from the receiver, passing nil in -setOwningView: to layoutGuide.
*/
- (void)removeLayoutGuide:(UILayoutGuide *)layoutGuide NS_AVAILABLE_IOS(9_0);
@end
解释:
- layoutGuide作为UI对象,只有添加到view中,即owningView不为nil,才能参与auto layout生成constraint
- layoutGuide作为UI对象与其它UI对象(layoutGuide或view)生成constraint时,在search closest common ancestor过程中,layoutGuide参考view为其owningView
layoutMarginsGuide
/* The edges of this guide are constrained to equal the edges of the view inset by the layoutMargins
*/
@property(readonly,strong) UILayoutGuide *layoutMarginsGuide NS_AVAILABLE_IOS(9_0);
解释:
- layoutMarginsGuide是view自身固有layoutGuide,layoutMarginsGuide.layoutFrame与view.frame各边缘距离依赖view.layoutMargins
layoutMarginsGuide的UI属性与NSLayoutConstraint的attribute对应关系为:
- leadingAnchor:NSLayoutAttributeLeadingMargin
- trailingAnchor:NSLayoutAttributeTrailingMargin
- leftAnchor:NSLayoutAttributeLeftMargin
- rightAnchor:NSLayoutAttributeRightMargin
- topAnchor:NSLayoutAttributeTopMargin
- bottomAnchor:NSLayoutAttributeBottomMargin
- centerXAnchor:NSLayoutAttributeCenterXWithinMargins
- centerYAnchor:NSLayoutAttributeCenterYWithinMargins