iOS9自动布局神器StackView
http://www.jianshu.com/p/767f72b7d754
这篇文章紧跟上边autolayout的一些小技巧,如果你没有看过,不防先看下《你真的会用autolayout吗?》这篇文章。上篇讲到autolayout的一些小技巧,但是还是免不了要加那些烦人的约束,自己去计算约束。而且autolayout出来这么久了,依然有好多应用在用手动布局。当然不是说手动布局有什么不好,有些特别复杂的界面还是要用手动布局的。主要是现在的autolayout对稍微复杂一些的界面加约束是特别头疼的一件事情,约束太多了,而且好多是重复繁杂的。iOS9新特性StackView,让适配变得非常简单,你甚至不用加约束。只需要简单设置几个属性。不多说,还是老规矩先上图。
可以看到,我这里除了最外面的垂直StackView加了上下左右四个约束,其余的没有加一个约束,就适配了。
由于这里步骤较多,分开讲解一下
首先添加一个纵向的StackView。这里不多解释。
这里解释一下这几个属性的含义:
Axis:StackView的布局属性(水平和垂直两个方向)
Alignment:设置子视图的对其方式(水平和垂直有所差别)
1)Fill:子视图填充StackView。
2)Leading:靠左对齐。
3)Trailing:靠右对齐。
4)Center:子视图以中线为基准对齐。
5)Top:靠顶部对齐。
6)Bottom:靠底部对齐。
7)First Baseline:按照第一个子视图中文字的第一行对齐。
8)Last Baseline:按照最后一个子视图中文字的最后一行对齐。
Distribution:设置子视图的分布比例
1)Fill:默认分布方式。
2)Fill Equally:子视图的高度或宽度保持一致。
3)Fill:Proportionally:StackView自己计算出它认为合适的分布方式。
4)Equal Spacing:子视图保持同等间隔的分布方式。
5)Equal Centering:每个子视图中心线之间保持一致的分布方式。
Spacing:设置子视图之间的间距
然后向垂直StackView中放三个水平StackView,可以看出StackView是可以嵌套的,三个水平StackView按照之前设置好的属性,等宽登高,间距为10排列。我这里设置三个水平StackView的属性是全选统一设置的。
这步没什么要解释的,扔子视图就行了,不用加一个约束。
下面再试下在iPhone5上效果
StackView只在iOS8和iOS9上能用,iOS7不支持,所以这半年用到的应该不会太多,根据以往惯例,明年估计将有很多应用不再对iOS7适配,StackView让适配变得非常简单。这里仅以9宫格为例,当然StackView还有很多强大之处。尤其是对于动态单元格的布局,更加有利。我这里就不再过多介绍,后面有可能我会把,我项目里面有动态单元格的用StackView单独做一个出来。
收工,感谢支持!
iOS9自动布局神器StackView的更多相关文章
- iOS9新特性——堆叠视图UIStackView
一.引言 随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard和一些第三方的框架,对于创建约束来说,已经十分方便,但 ...
- iOS9新特性-UIStackView
1. UIStackView相关属性理解 UIStackView是iOS9之后推出的,我也是第一次接触,在学习的过程中对于其中的相关属性,尤其是对其中的distribution几个属性值,一知半解的, ...
- iOS9 适配
iOS适配的相关内容的整理 之前iOS开发者一直很庆幸自己不用像安卓开发者那样适配各种不同类型的机型,但如今随着iPhone各种机型的改变,适配也成了我们开发中必须会的内容了.首先我们来了解一下对于不 ...
- 简便的自动布局,对UIStackView的个人理解!
序言: 更新了很久的Linux,我怕朋友们都视觉疲劳了,今天就更新在学ios开发时候,对一些知识点的理解.希望各位会喜欢! 正文: UIStackView 类提供了一个高效的接口用于平铺一行或一列的视 ...
- IOS9适配 MARK
最近做了iOS 9的适配,程序出现大量警告也做了些处理,写出来分先给大家. 一.iOS 9适配 问题一: <Error>: CGContextSaveGState: invalid con ...
- ios9中 UIStackView的使用
ios9中 UIStackView的使用 by 伍雪颖 UIStackView能够垂直或水平排布多个subview, 自己主动为每一个subview创建和加入Auto Layout constrain ...
- iOS9适配+warning消除
最近做了iOS 9的适配,程序出现大量警告也做了些处理,写出来分先给大家. 一.iOS 9适配 问题一: <Error>: CGContextSaveGState: invalid con ...
- 如何利用Reveal神器查看各大APP UI搭建层级
作者 乔同X2016.08.22 19:45 写了3195字,被42人关注,获得了73个喜欢 如何利用Reveal神器查看各大APP UI搭建层级 字数413 阅读110 评论0 喜欢5 title: ...
- iOS12、iOS11、iOS10、iOS9常见适配
作者:花丶满楼 链接:https://juejin.im/post/5c49a7d0518825254e4d46fc 一.iOS12(Xcode10) 1.1.升级Xcode10后项目报错 不允许多个 ...
随机推荐
- UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)
有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项. int getsockopt(int sockfd,int level,int optname,void *op ...
- 秒懂ASP.NET中的内置对象
上篇博客,小编主要简单的介绍了一下ASP.NET中的控件,这篇博客,小编主要简单总结一下ASP.NET中的内置对象,七个内置对象分别是:Request.Response.Application.Coo ...
- Java学习从菜鸟变大鸟之二 输入输出流(IO)
在软件开发中,数据流和数据库操作占据了一个很重要的位置,所以,熟悉操作数据流和数据库,对于每一个开发者来说都是很重要的,今天就来总结一下JavaI/O. 流 流是一个很形象的概念,当程序需要读取数据的 ...
- 《java入门第一季》之集合toString源码解析
代码: Collection c = new ArrayList(); c.add("hello"); c.add("world"); c.add(" ...
- 四大组件之Activity小结
一大波面试就要靠近,赶紧总结总结一些基础问题 1.Activity的概念 是Android应用层开发的四大组件之一,主要负责和用户交互部分,有自己的生命周期,在其上可以布置按钮,文本框等各种控件,简单 ...
- 04_查看Android内存使用情况
创建项目 Android清单文件 <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十六)
接上篇,我们实现菜单窗口的弹出和关闭功能,首先在打开GameScene.m,添加必要的实例变量: __weak PopupLayer *_popupLayer; 再添加2个新方法: -(void)re ...
- 14_Android中Service的使用,关于广播接收者的说明
服务:长期后台运行的没有界面的组件 android应用:什么地方需要用到服务? 天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息 股票显示:后台的连接服务器的逻辑,每隔一段时间获 ...
- 解决Fragment中使用地图,切换会闪一下黑屏的问题
我用的是高德的3D地图,用2D地图无此问题. 从答案来看,大概是SurfactView与Fragment之间的问题.虽然我用的是高德,不过这方法估计对百度地图也有效. 解决方法是,在使用到地图的Act ...
- 高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_L ...