iOS_OC_UIStackView属性和方法讲解

/// 从iOS9开始 提供用于快速实现布局的控件

/// 特点是不用写具体的约束 而是通过属性声明想要的一个布局效果 内部自动添加完善的约束

@interface UIStackView : UIView

/// 构造方法

- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views; // Adds views as subviews of the receiver.

/// 被管理布局的子views

@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *arrangedSubviews;

/// 添加/移除/插入一个view 并对其约束进行管理

/// addSubView也能添加一个子view进来 不过约束不受控制

- (void)addArrangedSubview:(UIView *)view;

- (void)removeArrangedSubview:(UIView *)view;

- (void)insertArrangedSubview:(UIView *)view atIndex:(NSUInteger)stackIndex;

/// 声明布局方向

@property(nonatomic) UILayoutConstraintAxis axis;

/// 声明与布局方向同向的一个布局规则

/// 比如axis定义为水平布局  那么这个属性就是定义水平方向上的布局规则  反之 就是定义垂直方向上的布局规则

@property(nonatomic) UIStackViewDistribution distribution;

/// 跟distribution相反 定义非布局方向上的一个布局规则

@property(nonatomic) UIStackViewAlignment alignment;

/// 设置默认的一个控件间距

@property(nonatomic) CGFloat spacing;

/// spacing是对全部子控件生效的 这个方法是从iOS11开始可以针对某个控件 单独设置不同的spacing

- (void)setCustomSpacing:(CGFloat)spacing afterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));

- (CGFloat)customSpacingAfterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));

/// 声明文本控件在计算spacing的时候 是否针对字体的基线

/// 同一个label用富文本显示不同字体的时候 即使fontsize是一样的 也会出现不同字体不是底部对齐的情况 就是因为不同字体 基线不同

@property(nonatomic,getter=isBaselineRelativeArrangement) BOOL baselineRelativeArrangement;

/// 从iOS8开始 UIview有layoutMargins属性

/// 这个Bool值就是声明子控件布局约束是针对layoutMargins 还是 针对bounds

/// 打个比方 当一个UIView的layoutMargins.top = 10的时候,这个时候子控件的top如果 = 5,那么当布局针对bounds的时候 顶部留白就是5,如果是针对layoutMargins,就是加上这个layoutMargins.top = 10,那么顶部留白就是15。

@property(nonatomic,getter=isLayoutMarginsRelativeArrangement) BOOL layoutMarginsRelativeArrangement;

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值