UIStackView

1. 使用UIStackView,要知道,其子视图的很多约束就无效了

2. 使用UIStackView,要知道,需要先把其约束设置好

3. UIStackView的属性:

3.1 alignment

主要设置非轴方向子视图的对齐方式。
typedef NS_ENUM(NSInteger, UIStackViewAlignment) {

UIStackViewAlignmentFill,//子视图填充StackView

UIStackViewAlignmentLeading,//子视图左对齐(垂直方向)

UIStackViewAlignmentTop =UIStackViewAlignmentLeading,//子视图顶部对齐(水平方向)

UIStackViewAlignmentFirstBaseline,// 按照第一个子视图的文字的第一行对齐,同时保证高度最大的子视图底部对齐(水平方向)

UIStackViewAlignmentCenter,//子视图居中对齐

UIStackViewAlignmentTrailing,//子视图右对齐(垂直方向)

UIStackViewAlignmentBottom =UIStackViewAlignmentTrailing,//子视图底部对齐(水平方向)

UIStackViewAlignmentLastBaseline,// 按照最后一个子视图的文字的最后一行对齐,同时保证高度最大的子视图顶部对齐(水平方向)

} NS_ENUM_AVAILABLE_IOS(9_0);

3.2 distribution 子视图的分布

下面的例子都是以纵向为例

typedef NS_ENUM(NSInteger, UIStackViewDistribution) {

UIStackViewDistributionFill = 0,

UIStackViewDistributionFillEqually,

UIStackViewDistributionFillProportionally,

UIStackViewDistributionEqualSpacing,

UIStackViewDistributionEqualCentering,

} NS_ENUM_AVAILABLE_IOS(9_0);

3.2.1. UIStackViewDistributionFill

Fill,就是填满了。这里分2种情况。

情况1,StackView的大小是固定的,那么,设置好其中元素的约束值,最后一个元素不设置,最后一个元素就会填满

情况2. StackView的大小不是固定的,有一个约束没有设置,假设是高度没有设置,那么,设置它的子视图的高度,StackView的高度就会自动调整到包裹住自己的元素

3.2.2. UIStackViewDistributionFillEqually

这个比较好理解,就是会自动调整高度,使它们高度一致。

也是存在2中情况,当stackview的高度有约束时,我们就不需要对子view添加高度约束了,系统会为我们做好。

当stackview的高度没约束时,我们就必须提供某个子view的高度约束,让系统好计算出剩下子view的高度和stackview的高度。

3.2.3.UIStackViewDistributionFillProportionally

按照原比例缩放。原比例哪里来?官方文档说,来自intrinsic size,我感觉比较简单的方法还是自己添加约束。

这个属性,一般是stackview的高度有约束,而4个subview的高度也有约束,注意subview的高度约束的priority要低于1000。stackview可以根据subview的约束,计算出比例,进行缩放。

3.2.4.UIStackViewDistributionEqualSpacing 与 UIStackViewDistributionEqualCentering

这2个选项也是应用于stackview高度确定,subview的高度也确定,想让subview比较均匀地分布在stckview中。均匀分布的方法不同,所以有2个选项。

4. 补充

另外,stackview的一个特点是,当把其中的一个子view hidden后,布局会重新渲染,就如同android布局中的 gone 选项,十分好用!省去了以前大把大把的代码。

5. 参考

http://www.cnblogs.com/breezemist/p/5776552.html

http://blog.csdn.net/it_kaka/article/details/52056114

http://blog.csdn.net/hard_man/article/details/50888377

时间: 2024-08-04 19:23:21

UIStackView的相关文章

UIStackView before iOS9.0

我用的Xcode8.1,同伴用的Xcode7.3.1,其上传了几个XIB文件,导致我这边项目一直爆红,爆红信息:"UIStackView before iOS9.0".如图: 网上海搜了一番,找到解决办法,现贴图如下: 将"Interface Builder Document"里的"Builds For"更改为" iOS9.0 and Later"即可.

iOS开发——UI篇OC篇&UIStackView详解

UIStackView详解 一.继承关系.遵守协议.隶属框架及可用平台 UIStackView 类提供了一个高效的接口用于平铺一行或一列的视图组合.Stack视图使你依靠自动布局的能力,创建用户接口使得可以动态的调整设备朝向.屏幕尺寸及任何可用范围内的变化.Stack视图管理着所有在它的 arrangedSubviews 属性中的视图的布局.这些视图根据它们在 arrangedSubviews 数组中的顺序沿着 Stack 视图的轴向排列.精确的布局变量根据 Stack 视图的 axis , d

ios9中 UIStackView的使用

ios9中 UIStackView的使用 by 伍雪颖 UIStackView可以垂直或水平排布多个subview, 自动为每个subview创建和添加Auto Layout constraints. 1.添加subview let logoImage:UIImageView = UIImageView(image: UIImage(named: "logo")) logoImage.contentMode = .ScaleAspectFit self.stackView.addArr

简便的自动布局,对UIStackView的个人理解!

序言: 更新了很久的Linux,我怕朋友们都视觉疲劳了,今天就更新在学ios开发时候,对一些知识点的理解.希望各位会喜欢! 正文: UIStackView 类提供了一个高效的接口用于平铺一行或一列的视图组合,stackView提供了高效的单行单列自动布局的手段,一般情况下,我们不需要对stackView.subviews做任何约束,只需要通过对stackView的axis, distribution, alignment, spacing属性进行修改: axis(轴向) 属性决定了 stack

UIStackView相关

从iOS9开始,苹果提供了UIStackView来帮助我们做布局,这玩意儿类似于安卓的线性布局.因为在使用过程中会遇到一些坑,所以写出来供遇到同样问题的人参考.我在这里提供xib和纯代码两种方式创建使用 UIStackView: 先看一下运行效果:    垂直方向,在图一里,label被拉伸了,在图2里面,label和image被压缩了 1.xib方式 打开storyboard之后会发现右下角多了一个图标: 在xib中创建 UIStackView 要用到这个按钮,就称它为 stack 按钮吧.

iOS 9: UIStackView入门

本文转自http://www.cocoachina.com/ios/20150623/12233.html 本文由CocoaChina译者candeladiao翻译,欢迎参加我们的翻译活动.原文:iOS 9: Getting Started with UIStackView 同iOS以往每个迭代一样,iOS 9带来了很多新特性.UIKit框架每个版本都在改变,而在iOS 9比较特别的是UIStackView,它将从根本上改变开发者在iOS上创建用户界面的方式.本文将带你学习怎样使用UIStack

iOS学习之 iOS9新特性UIStackView

参考博客 http://www.cocoachina.com/ios/20150623/12233.html 1.UIStackView 概述 Stack View的核心便是方便垂直或水平排布多个subview,如果你做过Android开发,那它和LinearLayout 控件非常相似. Stack View最有用的就是它会自动为每个subview创建和添加Auto Layout constraints.当然你可以控制subview的大小和位置.可以通过选项配置subview的大小.排布以及彼此

iOS 9 新增UIStackView

一.继承关系.遵守协议.隶属框架及可用平台 UIStackView 类提供了一个高效的接口用于平铺一行或一列的视图组合.Stack视图使你依靠自动布局的能力,创建用户接口使得可以动态的调整设备朝向.屏幕尺寸及任何可用范围内的变化.Stack视图管理着所有在它的 arrangedSubviews 属性中的视图的布局.这些视图根据它们在 arrangedSubviews 数组中的顺序沿着 Stack 视图的轴向排列.精确的布局变量根据 Stack 视图的 axis, distribution, al

UIStackView使用 (堆视图)

一基本使用 1创建多个子控件 for (int i = 0; i < 3; i++) { UIButton *imgBtn = [UIButton buttonWithType:UIButtonTypeCustom]; imgBtn.backgroundColor = [UIColor redColor]; [imgBtn setNormalImageWithName:@""]; [imgBtns addObject:imgBtn]; } 2创建堆控件 //创建堆控件 UISta