ios9控件新宠:UIStackView

来源:互联网 发布:批量处理图片软件 编辑:程序博客网 时间:2024/04/28 11:54

简介:UIStackView 类提供了一个高效的接口用于平铺一行或一列的视图组合。Stack视图使你依靠自动布局的能力,创建用户接口使得可以动态的调整设备朝向、屏幕尺寸及任何可用范围内的变化

布局内容
这里写图片描述
打开Main.Storyboard,选择其中一个Stack View可以查看其选项,并选中一个Stack View。在 Attributes Inspector中,注意Stack View下面列出的选择。

Axis表示Stack View的subview是水平排布还是垂直排布。Alignment控制subview对齐方式。Distribution定义subview的分布方式。Spacing 为subview间的最小间距。

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

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

UIStackView 是 UIView 的非渲染型子类。它没有提供其自有的任何用户接口。相反的,它只管理被其管理的视图的位置和尺寸。因此,有些属性(如 backgroundColor)在 stack 视图上是无效的。类似的,你无法重写 layerClass,drawRect: 或 drawLayer:inContext: 方法。

这里有一系列的属性来定义 stack 视图如何平铺其内容。

axis(轴向) 属性决定了 stack 的朝向,只有垂直或水平;

distribution(分布) 属性决定了其管理的视图在沿着其轴向上的布局;

alignment(对齐) 属性决定了其管理的视图在垂直于其轴向上的布局;

spacing(空隙) 属性决定了其管理的视图间的最小间隙;

baselineRelativeArrangement 属性决定了其视图间的垂直间隙是否根据基线测量得到;

layoutMarginsRelativeArrangement 属性决定了 stack 视图平铺其管理的视图时是否要参照它的布局边距

subView和arrangedSubView

开始使用Stack View前,我们先看一下它的属性subViews和arrangedSubvies属性的不同。如果你想添加一个subview给Stack View管理,你应该调用addArrangedSubview:或insertArrangedSubview:atIndex: arrangedSubviews数组是subviews属性的子集。

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

常用的方法
创建 Stack 视图
- initWithArrangedSubviews: (New in iOS 9.0)
管理安排的子视图
- addArrangedSubview: (New in iOS 9.0)
arrangedSubviews Property (New in iOS 9.0)
- insertArrangedSubview:atIndex: (New in iOS 9.0)
- removeArrangedSubview: (New in iOS 9.0)

设置布局
alignment Property (New in iOS 9.0)
axis Property (New in iOS 9.0)
baselineRelativeArrangement Property (New in iOS 9.0)
distribution Property (New in iOS 9.0)
layoutMarginsRelativeArrangement Property (New in iOS 9.0)
spacing Property (New in iOS 9.0)

常量
UIStackViewDistribution
UIStackViewAlignment

参考文章:
http://mobile.51cto.com/iphone-482515.htm
http://www.cocoachina.com/ios/20150623/12233.html

0 0
原创粉丝点击