简便的自动布局,对UIStackView的个人理解!
序言:
更新了很久的Linux,我怕朋友们都视觉疲劳了,今天就更新在学ios开发时候,对一些知识点的理解。希望各位会喜欢!
正文:
UIStackView 类提供了一个高效的接口用于平铺一行或一列的视图组合,stackView提供了高效的单行单列自动布局的手段,一般情况下,我们不需要对stackView.subviews做任何约束,只需要通过对stackView的axis, distribution, alignment, spacing属性进行修改;
- axis(轴向) 属性决定了 stack 的朝向,只有垂直或水平;
- distribution(分布) 属性决定了其管理的视图在沿着其轴向上的布局;
Fill : 铺满
Fill Equal : 等宽铺满
Fill Proportionally : 等比例铺满
Equal Spacing :等距离放置
Equal Centering :各个试图的中心距离保持一致,不够放置则压缩后面的试图距离;- alignment(对齐) 属性决定了其管理的视图在垂直于其轴向上的布局;
Fill : 垂直方向上铺满
Top : 沿顶端对齐
Center : 沿中心线对其
Bottom : 沿底部对齐
First Baseline : 按照第一个子视图的文字的第一行对齐,同时保证高度最大的子视图底部对齐(只在axis为水平方向有效)
Last Baseline : 按照最后一个子视图的文字的最后一行对齐,同时保证高度最大的子视图顶部对齐(只在axis为水平方向有效)- spacing(空隙) 属性决定了其管理的视图间的最小间隙;
- baselineRelativeArrangement 属性决定了其视图间的垂直间隙是否根据基线测量得到,选中 Baseline Relative 将根据subview的基线调整垂直间距;
- layoutMarginsRelativeArrangement 属性决定了 stack 视图平铺其管理的视图时是否要参照它的布局边距,选中 Layout Margins Relative 将相对于标准边界空白来调整subview位置;
UIStackView 实现有对齐要求的视图布局非常非常得简单,而使用 UICollectionView 和 UITableView 来实现,相对而言就比较麻烦,相比于collectionView而言,stackView更加小巧灵活,然而根据过来人的说法,想要完成更精致的效果,最终还是得靠UICollectionView;
- 源代码:
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIStackView *VerticalStackView;
@property (weak, nonatomic) IBOutlet UIStackView *HorizontalStackView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (IBAction)addStarBtn:(id)sender { UIImageView *starImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"star"]];
starImg.contentMode = UIViewContentModeScaleAspectFit; [self.HorizontalStackView addArrangedSubview:starImg];
[UIView animateWithDuration:0.25 animations:^{
[self.HorizontalStackView layoutIfNeeded];
}]; } - (IBAction)reduceStarBtn:(id)sender { UIImageView *starImg = self.HorizontalStackView.subviews.lastObject; [self.HorizontalStackView removeArrangedSubview:starImg];
[self.HorizontalStackView reloadInputViews];
[UIView animateWithDuration:0.25 animations:^{
[self.view layoutIfNeeded];
[starImg removeFromSuperview];
}];
} @end
使用环境:
根据GitHub上Most Stars前几名的demo来看,stackView最多就是应用于运行时的界面变化,其自动约束的特性尽显无疑,如下图:
结束总结:
博客园:爱家人爱老婆的IT男
简便的自动布局,对UIStackView的个人理解!的更多相关文章
- iOS9新特性-UIStackView
1. UIStackView相关属性理解 UIStackView是iOS9之后推出的,我也是第一次接触,在学习的过程中对于其中的相关属性,尤其是对其中的distribution几个属性值,一知半解的, ...
- c# 课堂总结7--函数
函数:数据类型-变量类型-运算符号表达式-语句(顺序,分支,循环)-数字 程序里的函数:能完成一个相对独立功能的代码块.数学里的函数:高度抽象.函数四要素:函数名,输入(参数),输出(返回值类型),加 ...
- 20172330 2017-2018-1 《Java程序设计》第七周学习总结
学号 2017-2018-1 <程序设计与数据结构>第七周学习总结 教材学习内容总结 这一章主要是对继承的学习: 继承是组织和创建类的基本技术,概念简单但影响重大,决定着面向对象软件的设计 ...
- python继承 super()
写这篇博文,始于以下问题的探究: #coding:utf-8 class A(object): def __init__(self): print 'enter A' print 'leave A' ...
- Rocket - interrupts - Parameters
https://mp.weixin.qq.com/s/eD1_hG0n8W2Wodk25N5KnA 简单介绍interrupts相关的Parameters. 1. IntRange 定义一个中断号区间 ...
- iOS UIStackView的理解
iOS9 提供的UIStackview简化了布局操作,它有些像Android中的liner layout.以前不用UIStackview也是可以做出类似的效果的,不过要添加许多的约束,看得头都大了,使 ...
- iOS9新特性——堆叠视图UIStackView
一.引言 随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard和一些第三方的框架,对于创建约束来说,已经十分方便,但 ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
随机推荐
- 删除表空间时,遇到了ORA-14404错误
Oracle中删除表空间时,遇到了ORA-14404错误. 错误信息如下: SQL> DROP TABLESPACE PART1 INCLUDING CONTENTS AND DATAF ...
- Effective Java 07 Avoid finallizers
NOTE Never do anything time-critical in a finalizer. Never depend on a finalizer to update critical ...
- 本人常用的Linux bash快捷键(持续更新)
按使用频率由高到低排列: Ctrl + a :移到命令行首Ctrl + e :移到命令行尾 Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾 Ctrl + d :删 ...
- 肯爹的 StringUtils.isNumeric(String str)
在项目中遇到一处bug,调试的结果竟然是StringUtils.isNumeric(String str) 在捣鬼(采用的是org.apache.commons.lang.StringUtils),下 ...
- 查看mysql主从配置的状态及修正 slave不启动问题
1.查看master的状态 mysql> show master status; //Position不应该为0 mysql> show processlist; //state状态应 ...
- C#程序员开发WinForm必须知道的 Window 消息大全(转)
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序. 消息本身是作为一个记录传递给应用程 ...
- 烂泥:KVM、kickstart与NFS集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 其实这篇文章原本是可以不写的,不过为了学习NFS的使用形式还是写下,算是作为一个笔记. 有关NFS的搭建与配置,可以参考我以前的文档<烂泥:NFS ...
- linux命令后台运行
有两种方式: 1. command & : 后台运行,你关掉终端会停止运行 2. nohup command & : 后台运行,你关掉终端也会继续运行 一. 简介 Lin ...
- Snowflake weakness and type2 fact table
DimProduct DimSubcategory Dimcategory productpk subcategorypk categorypk sku subcategoryName categor ...
- 【ASP.NET 基础】表单和控件
1.HTML表单的提交方式 对于一个普通HTML表单来说,它有两个重要的属性:action 和 method.action属性指明当前表单提交之后由哪个程序来处理,这个处理程序可以是任何动态网页或者 ...