1. 程式人生 > >uikit——Auto Layout——UIView——layout guide

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