使用Frame进行界面适配

2016-07-22  本文已影响0人  Tinchi_To

setFrame是最经典的方法,在iOS中没有给UI控件设置frame控件就不能显示,有时的确没有设置frame但就是显示了是因为有某些控件会自动计算和设置frame

首先,最简单的就是直接的使用initWithFrame:进行控件的初始化同时给frame属性赋值。这个方法用起来简便,适合于固定尺寸的简单控件,但是假若UITextField的字数行数不固定,需要从远程加载,这个方法就不好用了。

所以用的最多的还是setFrame方法,配合上计算控件size的方法使用效果更佳。

我个人喜欢使用给控件赋值的同时setFrame的方法,实现的技巧就是新建一个类来保存对应控件的数据模型以及控件frame,重写setModel,给控件赋值的时候同时给控件赋上frame。如果控件里面有子控件,子控件里还有子控件,这种情况也是很常见。举个例子

假设数据模型叫model

view有子控件subview1和subview2

子控件里面还有其他杂七杂八的子控件

这时候需要新建viewFrame、subview1Frame、subview2Frame类

viewFrame中有subview1Frame和subview2Frame成员,每个类中都包含model成员,

这时候重写这三个类的setModel方法,model传给viewFrame时候viewFrame传给两个subviewFrame,subviewFrame中计算并保存子控件大小,然后计算自身对应的subview的大小返回给viewFrame,viewFrame计算view的大小。

最后改写view的setViewFrame,对应subview改写setSubviewFrame方法,给view和subview以及subview里面的控件赋值和setFrame。

上一篇 下一篇

猜你喜欢

热点阅读