本来想自己写一个线性布局的类,看来不用了 ,网上已经有了,我先试试好不好用。

https://github.com/youngsoft/MyLinearLayout

线性布局MyLinearLayout相对布局MyRelativeLayout框架布局MyFrameLayout表格布局MyTableLayout流式布局MyFlowLayout五个布局类

功能介绍

一套功能强大的iOS布局库,他不是在自动布局的基础上进行的封装,而是一套原生的基于对frame设置的封装,通过重载layoutSubview函数来实现子视图的布局,因此可以无限制的运行在任何版本的iOS系统中。其设计思想以及原理则参考了android的布局和iOS自动布局以及SizeClass的功能,而比android的布局库以及iOS的自动布局库功能更加强大,使用则方便简单,其分别提供了:线性布局MyLinearLayout相对布局MyRelativeLayout框架布局MyFrameLayout表格布局MyTableLayout流式布局MyFlowLayout五个布局类,各种类应用的场景不大一样,具体的使用方法请看Demo中的演示代码以及到我的CSDN主页中了解:

http://blog.csdn.net/yangtiang/article/details/46483999 线性布局
http://blog.csdn.net/yangtiang/article/details/46795231 相对布局
http://blog.csdn.net/yangtiang/article/details/46492083 框架布局
http://blog.csdn.net/yangtiang/article/details/48011431 表格布局

线性布局MyLinearLayout

线性布局分为垂直线性布局和水平线性布局,其中垂直线性布局中的子视图总是按照添加的顺序依次从上到下排列,而水平线性布局中的子视图则按照添加的顺序依次从左到右进行排列。这种布局中的子视图之间不需要设置任何依赖关系,因此是最简单也是最常见的一种布局方式。

相对布局MyRelativeLayout

相对布局就是实现了iOS的自动布局功能的一种布局方式,但是比自动布局功能更加强大,更加容易使用。相对布局中的子视图必须要设置视图与视图之间的依赖关系以及视图与布局视图的依赖关系,也就是需要设置视图自身上下左右的依赖关系以及高度和宽度的依赖关系。对于一些不规则的布局则最好使用相对布局。

框架布局MyFrameLayout

框架布局,故名思议要求布局必须设定明确的高度和宽度值,而且里面的子视图只能布局在框架布局的上中下以及左中右的某个具体的位置上,框架布局支持子视图之间的重叠排列。因此框架布局一般是用来做根布局使用。

表格布局MyTableLayout

表格布局,是一种增强的线性布局,也分为垂直表格和水平表格,表格布局必须要先添加一行,然后再在当前行上进行单元格视图的添加,表格布局的风格类似于HTML页面的表格实现机制,表格布局用于那些有规律的子视图的排列,以及可以用于实现瀑布流的效果。

流式布局MyFlowLayout

流式布局是一种限定了行数或者列数的布局,同样分为垂直流式布局和水平流式布局,对于垂直流式布局来说,需要设定每行的子视图数量,设定后子视图依次从左到右,从上到下依次排列,流式布局一般用于子视图有规律的排列。

演示效果图

V1.1.0版本新功能

  1. 增加了新布局流式布局MyFlowLayout。
  2. 线性布局添加了gravity停靠设置的屏幕水平居中和屏幕垂直居中的功能。
  3. 添加了设置布局视图背景图片backgroundImage和高亮背景图片highlightedBackgroundImage的功能。
  4. 添加了视图偏移约束的最大max最小值min限制,以及尺寸约束时的最大max最小值min限制。
  5. 添加了布局尺寸评估方法estimateLayoutRect以及视图的评估rect值的功能。
  6. 添加了框架布局中的子视图的高度和宽度设置功能,可以让高度或者宽度设置为父视图的高度或者宽度的缩放比例,可以设置高度和宽度相等等功能。
  7. 添加了线性布局均分视图设置边距subviewMargin的功能。
  8. 添加了在布局中让某个子视图不参与布局的功能,只要将useFrame设置为YES即可。
  9. 添加了布局视图设置按下事件setTouchDownTarget,按下被取消setTouchCancelTarget的事件功能。
  10. 添加了线性布局均分时的间距值设置功能averageSubviews。
  11. 添加了清除视图布局设定的方法resetMyLayoutSetting。

BUG修复

  1. 修复了布局占用大量内存的问题。
  2. 修改了布局内添加UIScrollView时橡皮筋效果无效的问题。
  3. 优化了一些约束冲突的解决。
  4. 优化了布局视图添加到非布局视图时的位置和尺寸调整功能。
  5. 修正了子视图恢复隐藏时的界面不重绘的问题。
  6. 修正了布局边界线的缩进显示的问题。
  7. 修正UITableView,UICollectionView下添加布局可能会造成的问题。

FAQ

  1. 如果使用布局运行时造成CPU的100%占用则表示出现约束冲突了,请检查子视图约束的设置。
  2. 为支持布局而扩展的视图属性只对放在布局内才完全有效,如果在布局视图之外设置则无效。
  3. 如果将布局视图放在非布局视图之中则只有部分属性有效,如果同时设置了leftMargin和rightMargin则表示设置自身的宽度,如果同时设置了topMargin,bottomMargin则表示设置自身的高度。
  4. 如果设置wrapContentWidth,和wrapContentHeight的话,而又设置高度和宽度话可能会引起布局冲突。
  5. 自动布局并不是不用设置位置和高宽,而只是通过一些手段或者关联减少设置绝对位置和高度而已。

iOS 之 线性布局的更多相关文章

  1. Android 线性布局(LinearLayout)相关官方文档 - 指南部分

    Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用 ...

  2. Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分

    Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...

  3. IOS自己主动布局中的浮动布局(6)----MyFloatLayout横空出世

    https://github.com/youngsoft/MyLinearLayout 前言 在MyLayout的6大布局中,每种布局都有不同的应用场景. 且每种布局的子视图的约束机制不一样:线性布局 ...

  4. iOS内存管理布局及管理方案-理论篇

    苹果设备备受欢迎的背后离不开iOS优秀的内存管理机制,那iOS的内存布局及管理方案是怎样的呢?我们一起研究下. 内存管理分为五大块 栈区(stack):线性结构,内存连续,系统自己管理内存,程序运行记 ...

  5. Android-RelativeLayout(相对布局)、LinearLayout(线性布局)

    RelativeLayout(相对布局):按照各子元素之间的位置关系完成布局. 定位:android:layout_above="@id/xxx" --将控件置于给定ID控件之上 ...

  6. Android-LinearLayout(线性布局)

    布局:Android为我们提供了一个View和ViewGroup子类的集合.ViewGroup类是View的子类,也被称为Layout布局,它提供了流式布局.线性布局等多种布局方式.View是绘制在屏 ...

  7. android—-线性布局

    android五大布局之线性布局. 1.线性布局的特点:各个子元素彼此连接,中间不留空白 而今天我们要讲解的就是第一个布局,LinearLayout(线性布局),我们屏幕适配的使用 用的比较多的就是L ...

  8. android学习之线性布局

    效图如下 移通152余继彪 该布局使用了线性布局完成 父布局为线性布局,黄色和灰色部分为水平的线性布局,剩余50%部分为水平线性布局,该布局中包含了两个垂直的线性布局分别占了三分之1和三分之二

  9. android开发------编写用户界面之线性布局

    一个好的应用程序离不开人性化的用户界面.在学习其他东西之前.理应先学习编写程序的布局(外观) 今天,我们就来学习android的UI布局----LinearLayout. LinearLayout,即 ...

随机推荐

  1. AJAX开发技术--AJAX简介

    Asynchronous  JavaScript and XML,异步JavaScript和XML 主要目的用于页面的局部刷新.不用全部刷新,提高性能. 在AJAX中主要是通过XMLHttpReque ...

  2. Mysql命令-求一列字段的总和

    求和命令 mysql> select SUM(price) from order where create_time>'2016-03-12';+------------+| SUM(pr ...

  3. svg都快忘了,复习一下

    http://www.360doc.com/content/07/0906/21/39836_724430.shtml

  4. Segment,Path,Ring和Polyline对象

    Segment几何对象   Segment对象是一个有起点和终点的“线“,也就是说Segement只有两个点,至于两点之间的线是直的,还是曲的,需要其余的参数定义.所以Segment是由起点,终点和参 ...

  5. 硬盘安装Win7、CentOS7双系统

    待补充 0.软件 Acronis Disk Director:用来对硬盘分区,将磁盘的一部分格式化成Linux可以识别的ext3格式 Ext2Fsd:因为Windows不能识别ext3格式的文件系统, ...

  6. 转:XPath路径表达式

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. XML 实例文档 我们将在下面的例子中使用这个 XML 文档. & ...

  7. Python3基础 list(enumerate()) 将一个列表的每一个元素转换成 带索引值的元组

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  8. HDU 4557 非诚勿扰 队列、(记一次失败的SBT尝试)

    非诚勿扰 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) [Problem De ...

  9. Ubuntu Server 重启 Apache Mysql

    a. 重启 apache sudo service apache2 restart b. 重启 MySQL sudo service mysql restart

  10. sublime text 主题推荐

    Soda Spacegray Flatland Tomorrow Base 16 Solarized Predawn itg.flat 其他所有的配色方案和主题.