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

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. opencart配置税率

    1.System->Localisation->Geo Zones新增税收区域 2.System->Localisation->Taxes->Tax Rates新增税率 ...

  2. android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明

    android应用程序,由一到多个Activity组成.每个Activity没有很紧密的联系,因为我们可以在自己的程序中调用其它Activity,特别是调用自己的代码之外生成的Activity,比如a ...

  3. Mysql删除数据后磁盘空间未释放的解决办法【转】

    转自 Mysql删除数据后,磁盘空间未释放的解决办法 - 今日头条(TouTiao.com)http://toutiao.com/a6303087712678412546/?tt_from=mobil ...

  4. bat脚本:自动压缩n天前的文件【转载】

    原文如下: bat脚本:自动压缩n天前的文件-中原小伙-ChinaUnix博客http://blog.chinaunix.net/uid-24946452-id-1651762.html     磁盘 ...

  5. Entity Framework 学习初级篇6--EntityClient

    System.Data.EntityClient 命名空间是 实体框架的 .NET Framework 数据提供程序.EntityClient 提供程序使用存储特定的 ADO.NET 数据提供程序类和 ...

  6. decompile elf

    no way, try,objdump --disassemble <elf file>

  7. PL/SQL developer 管理多套数据库

    PL/SQL developer 管理多套数据库,作为一个统一的接口平台,连接多套数据库. 1.. 1.类SQL PLUS窗口:File->New->Command Window,这个类似 ...

  8. zencart_magiczoom

    mod_zencart_magiczoom使用   一.复制相应文件到相应目录. 二.安装sql文件. 三.按照正确命名上传商品图片,一般需要中图跟大图. 四.程序运行时会在images目录下创建ma ...

  9. HDU 4006 The kth great number 优先队列、平衡树模板题(SBT)

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  10. 说说Android应用的persistent属性

    转载地址:http://my.oschina.net/youranhongcha/blog 摘要 在Android系统中,有一种永久性应用.它们对应的AndroidManifest.xml文件里,会将 ...