天天看点

uikit——Auto Layout——UIView——layout guide

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

readableContentGuide