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

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. MySQL架构优化:定时计划任务与表分区

    转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...

  2. Genymotion开启就全部白屏解决方法

    Genymotion开启就整个界面全部白屏,包括菜单栏也白屏,解决方法: 很可能是显卡驱动有问题,用驱动人生或者驱动精灵更新显卡驱动就可以了. 目前开发者好用的模拟器有: 1.Genymotion 2 ...

  3. Servlet程序开发--实例操作:MVC设计模式应用

    以前做过一个登录程序,是用JSP+JavaBean完成的,最大的问题,JSP文件内容太多了. 1. VO 2. DBC 3. DAO 3.1 impl 3.2 proxy 4. Factory 5. ...

  4. 配置F5 负载均衡(转)

    转自<网络运维与管理>201406-11 配置F5交换机的问题在于,与平时所学的交换机.路由器思路完全不同,拿到设备后,完全不知如何下手. 网络拓扑图如下: 两台web服务器对外提供服务, ...

  5. 草,又学了个新命令,nc传文件。

    nc -l 5222 > aa nc 192.168.0.48 5222 < a http://www.linuxso.com/command/nc.html

  6. 转:移植SlidingMenu Android library,和安装example出现的问题解决

    很多项目都用到类似左侧滑动菜单的效果,比如facebook,evernote,VLC for android等等,这很酷 源代码可以从GitHub的https://github.com/jfeinst ...

  7. iOS开发-正则表达式3种形式

    转至:http://www.cnblogs.com/GarveyCalvin/p/4250145.html iOS开发-正则表达式的使用方法 前 言:在表单验证中,我们经常会使用到正则,因为我们需要用 ...

  8. div定位

    1.float定位带来的问题<html> <head> <title>div浮动引发的问题</title> </head> <styl ...

  9. 如何做好移动安全(梆梆加固后的APK破解提取dex)

    智能手机的普及将移动互联网的发展推到了一个让所有人都为之兴奋的高度,我想即使是以商业眼光见长的“苹果教父”乔布斯也不会料想到短短几年时间,智能手 机就已经成为了所有人离不开的商业产品,各种商业应用层出 ...

  10. Matplotlib中文显示的问题

    原文地址:http://blog.csdn.net/rumswell/article/details/6544377 #Matplotlib中文显示有问题,当然可以修改配置文件matplotlibrc ...