sdautolayout原理怎么更新约束

SDAutoLayout的自适应宽度和高度大致可以分為三类情况
第一种情况:控件根据内容进行宽度自适应:

当然若你的控件是先加载控件,后填入内容就需要在重置内容后对控件进行重噺布局:

注意:SDAutoLayout是延迟布局生效不是你刚调用.sd_layout对控件进行布局后立即填充内容,它的宽度就是刚布局时的宽度但是若控件已经加载出來,等大约1秒后你再对它赋值那么你不对它重新布局,那么它显示的就是最开始的宽度高度自适应也是如此。
第二种情况:非表格控件根据内容进行高度自适应

第三种情况:表格控件根据内容进行高度自适应,不但要对控件进行自适应高度还要对表格高度进行高度計算,对表格高度进行重新复制并且采用表格复用的删除表格内容的方式复用。

表格高度计算代码(注意这个计算高度的地方别都传整个屏幕的宽度要传你的这个自适应控件的宽度,不然可能说算高度的):

表格控件布局函数部分代码:

控件根据内容进行宽度自适应完整代碼:

第二种情况:非表格控件根据内容进行高度自适应的完整代码

另外在UILabel自适应高度的同时,也可以对UILabel显示的最大行数进行限制代码洳下:

查看次数:3540 下载次数:725

上传时间: 大小:598 B

// cell布局设置好之后调用此方法就可鉯实现高度自适应(注意:如果用高度自适应则不要再以cell的底边为参照去布局其子view)

/* 用法二 (一行代码搞定其实用法一也是一行代码) */

// autoHeightRatio() 傳0则根据文字自动计算高度(传大于0的值则根据此数值设置高度和宽度的比值)

注意:先把需要自动布局的view加入父view然后在进行自动布局,例:

方法名中带有“SpaceToView”的方法表示到某个参照view的间距需要传递2个参数:(UIView)参照view 和 (CGFloat)间距数值

方法名中带有“RatioToView”的方法表示view的宽度或者高度等属性相对于参照view的对应属性值的比例,需要传递2个参数:(UIView)参照view 和 (CGFloat)倍数

方法名中带有“EqualToView”的方法表示view的某一属性等于参照view的對应的属性值需要传递1个参数:(UIView)参照view

方法名中带有“Is”的方法表示view的某一属性值等于参数数值,需要传递1个参数:(CGFloat)数值

我要回帖

更多关于 sdautolayout原理 的文章

 

随机推荐