首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOSMyLayout布局体系--浮动布局MyFloatLayout

前言     在MyLayout6大布局中,每种布局都有不同应用场景。...且每种布局子视图约束机制不一样:线性布局MyLinearLayout、表格布局MyTableLayout、流式布局MyFlowLayout、浮动布局MyFloatLayout这四种布局子视图之间约束是通过添加到父布局先后顺序来决定...在这些布局中相对布局因为是通过设定视图之间依赖来建立一种布局约束,因此我们可以用他来构造一些复杂且无规律界面布局,但其缺点则是太过于依赖约束,导致当界面调整时需要重新设定视图之间依赖关系(iOS...在当前布局库版本中,我们只有线性布局、浮动布局、表格布局、流式布局支持智能边界线设定,而框架布局、相对布局则是不支持。...因此我们也可以借助浮动布局来我们各种复杂界面布局,而且浮动布局也能方便实现线性布局以及流式布局能力。

97230

iOSMyLayout布局系列-流式布局MyFlowLayout

iOS布局体系概览      在我CSDN博客中几篇文章分别介绍MyLayout布局体系中视图从一个方向依次排列线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置框架布局...这些属性和类共同构建了出了一套完整iOS界面布局系统。下面是这个套界面布局体系类结构图: ?...这种流式布局布局机制是,里面的子视图按添加顺序每行依次从左排列到右,而当布局视图剩余宽度容纳不下一个要插入子视图宽度时则会新起一行,重新从左到右继续排列,如果遇到某个子视图宽度甚至比布局视图还要宽时则总时会压缩子视图宽度和布局视图宽度保持一致...这种流式布局布局机制是,里面的子视图按添加顺序每列依次从上排列到下,而当布局视图剩余高度容纳不下一个要插入子视图高度时则会新起一列,重新从上到下继续排列,如果遇到某个子视图高度甚至比布局视图还要高时则总时会压缩子视图高度和布局视图高度保持一致...六、总结 关于流式布局功能就介绍到这了,流式布局是MyLayout布局系统里面的5大布局视图之一,主要用于建立那些有规律排列和对齐视图应用场景,而且通过使用流式布局来建立界面布局使用代码量是最少而且最灵活

2.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

iOS布局UICollectionView系列五——圆环布局实现

iOS布局UICollectionView系列五——圆环布局实现 一、引言         前边几篇博客,我们了解了UICollectionView基本用法以及一些扩展,在不定高瀑布流布局中...是一个布局抽象基类,我们要使用自定义布局方式,必须将其子类化,可能你还记得,我们在进行瀑布流布局时候使用过UICollectionViewFlowLayout类,这个类就是继承于UICollectionViewLayout...类,系统为我们实现好一个布局方案。...方法来返回我们布局信息字典,这个前面瀑布流布局思路是一样: @implementation MyLayout {     NSMutableArray * _attributeAttay; } -...,我们就实现哦圆环布局,随着item多少,布局会自动调整,如果不是UICollectionView功劳,实现这样功能,我们可能要写上一阵子了^_^。

1.4K20

iOS自动布局——Masonry详解

2.png 所以,软件界面开发核心点即是:如何减少UI设计稿建模难度和减少建模转化到代码实现难度 最初iOS提供了平面直角坐标系方式,来解决布局问题,即所谓手动布局。...更多是依靠相对位置。 所幸,iOS为我们提供自动布局方法,来解决这一困境。 3.png 自动布局基本理念 其实说到本质,它和手动布局是一样。...对一个控件放在哪里,我们依然只关心它(x, y, width, height)。但手动布局方式是,一次性计算出这四个值,然后设置进去,完成布局。...关于如何解决减少建模转化到代码实现难度问题, 开源库 上面的代码,我们可以看到,虽然自动布局已经比手动布局优雅不少了,但它依然行数较多。...至此,我们完成了所有准备,就可以开始愉快自动布局啦。 以上就是Masonry对iOS自动布局封装解读。 如有问题,欢迎指正。

2.9K80

iOS自动布局——Masonry详解

前言 UI布局是整个前端体系里不可或缺一环。代码布局是设计语言与用户视觉感受沟通桥梁,不论它看起来多么简单或是琐碎,但不得不承认,绝大部分软件开发问题,都是界面问题。...image.png 所以,软件界面开发核心点即是:如何减少UI设计稿建模难度和减少建模转化到代码实现难度 最初iOS提供了平面直角坐标系方式,来解决布局问题,即所谓手动布局。...更多是依靠相对位置。 所幸,iOS为我们提供自动布局方法,来解决这一困境。 ? image.png 自动布局基本理念 其实说到本质,它和手动布局是一样。...对一个控件放在哪里,我们依然只关心它(x, y, width, height)。但手动布局方式是,一次性计算出这四个值,然后设置进去,完成布局。...至此,我们完成了所有准备,就可以开始愉快自动布局啦。 以上就是Masonry对iOS自动布局封装解读。 如有问题,欢迎指正。

91420

浅汇-iOS UI布局

iOS中UI布局是很重要,而在前期开发中就要选定好布局方法,因为这对整个工程乃至于后期版本维护都有很重要影响。...这中页面布局方式思维模式跟Frame完全不同,使用时应跳出Frame坐标布局思维模式,站在关系依赖布局思维方式上才可以达到娴熟正确使用。...IB 原生AutoLayout 原生iOS布局,要添加`一个约束`是这样:  NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem...就相当于以上那复杂代码就要最少写四次。 所以对IOSAutoLayout进行封装就显得很有必要了。...` ---- 小结  iOS关于UI布局知识还有很多,至此我列举了一些需要注意地方,使用时候是先初始化`new`比较方便,先加载到父视图上后设置相关属性,然后再进行布局方面的设置,若后加到父试图上

2.1K20

iOS界面布局之三——纯代码autoLayout及布局动画

iOS界面布局之三——纯代码autoLayout及布局动画 一、引言         关于界面布局,apple策略已经趋于成熟,autolayout优势在开发中也已经展现淋漓尽致。...除了使用storyBoard进行布局约束拖拽,有时我们也需要在代码中进行autolayout布局设置,Masonry库可以方便创建约束属性,实际上,我们也没有必要再使用系统原生代码来创建和设置约束...前几篇布局介绍链接如下: 使用autoresizing进行界面布局:http://my.oschina.net/u/2340880/blog/423357 初识autolayout布局模型:http:...这个概念,相应也增加了NSLayoutConstraint这个对象,这个对象就是专门用来进行约束布局设置对象。...代表是水平布局还是垂直布局,H代表水平,V表示垂直,|表示父视图边沿,-20-表示距离20px,[]内是要布局摆放视图对象名,()中是约束尺寸,H下则为宽度,V下则为高度,@后面的数字代表优先级

2.8K30

IOS开发之绝对布局和相对布局(屏幕适配)

IOSUI设计中也有绝对定位和相对定位,和我们web前端绝对定位和相对定位有所不同但又有相似之处。下面会结合两个小demo来学习一下我们IOS开发中UI绝对定位和相对定位。...在布局中LayoutConstraint和Fram布局方式是不能并存。...上面说了这么多了,可能说不太明白,还是那句话,怎么能少了代码和实例支持呢,下面会通过屏幕适配事例来用绝对布局和相对布局同时实现下面的描述效果。  ...相对布局使用起来会比绝对布局要复杂一些,下面先做屏幕适配例子,图一是在iPhone4.0寸效果图, 当我们不做任何处理时候在3.5寸屏上是显示不出来的如第二张图: ?...那么我如何用相对布局实现上面那种view放大效果呢,接下来我们需要新建一个工程,因为相对布局和绝对布局在同一个组件中无法并存。

2.2K60

iOS布局之AutoresizingMask和AutoLayout

关于iOS布局主要有两种方式,分别是AutoResizing和AutoLayout。其中AutoResizing作为一种旧布局方式,在AutoLayout被推广之后已经很少被使用。...为了更加清晰了解iOS布局方式,本篇针对于这两种布局方法进行简要总结。...一.AutoResizing 我们在使用AutoResizing进行布局时候,其主要思想就是设置子视图跟随父视图frame变化而变化。具体情况,我们可以设置左跟随,右跟随等等。...从而实现了视图自动布局。而当我们确定选择使用AutoLayout添加自己约束时候,我们必须设置此属性为NO,XIB中这个属性默认是NO。...还有一种就是代码直接添加约束,但是代码自动布局是一件很麻烦事,我们通常又会借助第三方即Masonry,下章节将会简要介绍Masonry用法。

1.8K60

iOS自动布局框架之Masonry

目前iOS开发中大多数页面都已经开始使用Interface Builder方式进行UI开发了,但是在一些变化比较复杂页面,还是需要通过代码来进行UI开发。...Masonry是同时支持Mac和iOS两个平台,在这两个平台上都可以使用Masonry进行自动布局。...在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程中创建视图时,会根据设置好约束计算frame,并渲染到视图上。...调用此方法,如果有标记为需要重新布局约束,则立即进行重新布局,内部会调用updateConstraints方法 - (void)updateConstraints 重写此方法,内部实现自定义布局过程...关于UIView重新布局相关API,主要用以下三个API: - (void)setNeedsLayout 标记为需要重新布局 - (void)layoutIfNeeded 查看当前视图是否被标记需要重新布局

1.1K60

iOS自动布局框架之Masonry

目前iOS开发中大多数页面都已经开始使用Interface Builder方式进行UI开发了,但是在一些变化比较复杂页面,还是需要通过代码来进行UI开发。...Masonry是同时支持Mac和iOS两个平台,在这两个平台上都可以使用Masonry进行自动布局。...在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程中创建视图时,会根据设置好约束计算frame,并渲染到视图上。...调用此方法,如果有标记为需要重新布局约束,则立即进行重新布局,内部会调用updateConstraints方法 - (void)updateConstraints 重写此方法,内部实现自定义布局过程...关于UIView重新布局相关API,主要用以下三个API: - (void)setNeedsLayout 标记为需要重新布局 - (void)layoutIfNeeded 查看当前视图是否被标记需要重新布局

2K50

iOS 瀑布流之栅格布局

实现栅格布局效果示意图 需求示意图 确定需求 由上面的需求示意图可知模块最小单位是正方形,边长是屏幕宽除去边距间隔后四等份,而每个模块样式有小正方形(1:1)、大正方形(2:2)、横长方形(2...:1)、纵长方形(1:2),动态根据服务器下发模块样式绘制布局,可以横向滑动,限定为两行高度。...答案当然是用UICollectionView了,然后自定义流水布局UICollectionViewLayout,主要代码如下:计算记录每一个cell对应布局属性。...这个样式栅格布局我已封装集成在WSLWaterFlowLayout 中,详情可以前往下载。...目前支持竖向瀑布流(item等宽不等高、支持头脚视图)、水平瀑布流(item等高不等宽 不支持头脚视图)、竖向瀑布流( item等高不等宽、支持头脚视图)、栅格布局瀑布流 4种样式瀑布流布局

1.7K10

iOS界面布局之一——使用autoresizing进行动态布局

iOS界面布局之一——使用autoresizing进行动态布局 autoresizing是iOS中传统界面自动布局方式,通过它,当父视图frame变换时,子视图会自动做出相应调整。...二、nib文件中可视化设置自动布局 在storyboard中我们可以更加轻松进行autoresizing自动布局。...如果你觉得autoresizing很强大,那么你就太容易满足了,autoresizing可以满足大部分简单自动布局需求,可是它有一个致命缺陷,它只能设置子视图相对于父视图变化,却不能精确这个变化度是多少...,因此对于复杂精准布局需求,它就力不从心了。...但是有一个好消息告诉你,iOS6之后autolayout自动布局方案,正是解决复杂布局好帮手,我们在下一遍博客中再进行详细讨论。 专注技术,热爱生活,交流技术,也做朋友。

64620

iOS文本布局探讨之一——文本布局框架TextKit浅析

iOS文本布局探讨之一——文本布局框架TextKit浅析 一、引言         在iOS开发中,处理文本视图控件主要有4中,UILabel,UITextField,UITextView和UIWebView...其中UILabel与UITextField相对简单,UITextView是功能完备文本布局展示类,通过它可以进行复杂富文本布局,UIWebView主要用来加载网页或者pdf文件,其可以进行HTML,...TextKit是一个偏上层开发框架,在iOS7以上可用,使用它开发者可以方便灵活处理复杂文本布局,满足开发中对文本布局各种复杂需求。...官方文档中一张图片很确切,经常会被用来描述TextKit框架在iOS系统文本渲染中所处位置。 ?...三、使用TextKit进行文本布局流程         个人理解,TextKit主要用于更精细处理文本布局以及进行复杂图文混排布局,使用TextKit进行文本布局展示十分繁琐,首先需要将显示内容定义为一个

1.7K10
领券