美文网首页
UIStackView 使用

UIStackView 使用

作者: 暗物质 | 来源:发表于2017-08-15 21:47 被阅读1002次

UIStackView 只支持iOS9之后的版本,然而现在应用一般支持到iOS7,FDStackView,It will automatically replace the symbol for UIStackView into FDStackView at runtime before iOS9.

例子
iOS 9: UIStackView入门
UIStackView教程

iOS9新特性-UIStackView

简介

Stack View最有用的就是它会自动为每个subview创建和添加Auto Layout constraints。当然你可以控制subview的大小和位置。可以通过选项配置subview的大小、排布以及彼此间的间距。

布局内容

Axis表示Stack View的subview是水平排布还是垂直排布。

Alignment控制subview对齐方式。alignment 属性指定了子视图在布局方向上的对齐方式,如果值是 Fill 则会调整子视图以适应空间变化,其他的值不会改变视图的大小。有效的值包含:Fill、 Leading、 Top、 FirstBaseline、 Center、 Trailing、 Bottom、 LastBaseline。

Distribution 分布

Distribution 属性定义了 subviews 的分布方式,可以赋值的5个枚举值可以分为两组: Fill 组 和 Spacing 组。

Fill 组用来调整 subviews 的大小,同时结合 spacing 属性来确定 subviews 之间的间距。

  • Fill: subviews 将会根据自己内容的内容阻力(content resistance)或者内容吸附优先级(hugging priority)进行动态拉伸,如果没有设置该值,subviews 中的一个子视图将会用来填充剩余可用空间。

  • FillEqually: 忽略其他的约束,subviews 将会在设置的布局方向上等宽或等高排列。

  • FillProportionally: subviews 将会根据自己的原始大小做适当的布局调整。

Spacing 组指定了 subviews 在布局方向上的间距填充方式,当 subviews 不满足布局条件或有不明确的的 Auto Layout 设置时,该类型的值就会结合相应的压缩阻力(compression resistance) 来改变 subviews 的大小。

  • EqualSpacing: subviews 等间距排列

  • EqualCentering: 在布局方向上居中的 subviews 等间距排列

把术语简化一下,你可这样理解:Alignment 用于控制X 和 Y值,而Distribution 用于控制高度和宽度。另两个值都会影响对齐。如果选中Baseline Relative将根据subview的基线调整垂直间距。

另一个需要记住的是,Stack View会被当成Container View。所以它是一个不会被渲染的UIView子类。它不像其他UIView子类一样,会被渲染到屏幕上。这也意味着设置其backgroundColor属性或重载drawRect:方法都不会产生任何效果

subView和arrangedSubView

开始使用Stack View前,我们先看一下它的属性subViewsarrangedSubvies属性的不同。
-->arrangedSubviews数组是subviews属性的子集。

如果你想添加一个subview给Stack View管理,你应该调用addArrangedSubview:或insertArrangedSubview:atIndex:

要移除Stack View管理的subview,需要调用removeArrangedSubview:和removeFromSuperview。

移除arrangedSubview只是确保Stack View不再管理其约束,而非从视图层次结构中删除,理解这一点非常重要。

举例:

打开Main.Storyboard选择上面的Stack View。
对Attributes Inspector作如下改变:

Alignment 设为 Center
Distribution 设为 Equal Spacing
Spacing 设为 30

这告诉Stack View为subview添加约束,使其垂直居中并沿Stack View的轴线对称,然后为subview设置边距30。

如果subview大小和Stack View内容区不相符,将根据compression resistance priorities对subview进行拉伸或压缩。在运行时给Stack View添加subview也同样会如此。

布局有任何歧义Stack View都会根据subview在arrangedSubviews中index一步步回退去调整subview的大小,直至其刚好适应Stack View的大小。

图示

相关文章

  • UIStackView 使用

    UIStackView 只支持iOS9之后的版本,然而现在应用一般支持到iOS7,FDStackView,It w...

  • UIStackView使用

    什么是UIStackView? UIStackView是在iOS9中才出现的,它可以帮助我们布局UI控件,从而减少...

  • UIStackView使用

    UIStackView的使用 隐藏状态栏,设置 View controller-based status bar ...

  • UIStackView 使用

    为什么使用它 1.动态实现视图的添加。不用修改删除、添加、隐藏后的布局约束。2.布局速度快, 不需要写autola...

  • UIStackView的使用

    终于熬到了iOS9.0,如果你们公司最低支持的是iOS9的话。那么UIStackView就可以使用了。 由于UIS...

  • UIStackView的使用

    一、了解 instric content size instric content size 表示一个 view ...

  • UIStackView使用(二)

    与Label、Button等控件一样,Stack View 也有自己的Intrinsic Size,在未设定约束时...

  • UIStackView使用介绍

    在iOS开发中,对于控件布局我们一般是使用AutoLayout加约束的机制实现,UIKit有一个布局组件UISta...

  • 【UIKit】UIStackView

    UIStackView UIStackView : UIViewiOS 9.0 基于 Flexbox 思想的布局方...

  • iOS - UIStackView的使用

    UIStackView 在iOS9中苹果在UIKit框架中引入了一个新的视图类UIStackView。UIStac...

网友评论

      本文标题:UIStackView 使用

      本文链接:https://www.haomeiwen.com/subject/lezmrxtx.html