适配技巧?
适配的思维就是AutoLayout的思维,告诉各个控件的区域相对位置,最初都是根据设备的屏幕大小作比较。自适应和描述性布局允许将宽度或高度(frame)设置为固定值,可以给视图设置一个最小或是最大值,但是不能将视图的起始位置(Origner)或是中心位置设置为固定值,换句话说,你的大小可以给你固定,但是你的位置不能给你固定。当对View使用Auto Layout适配的时候,原先对这个View做的frame或者大小都会立即无效,最大的那个View就是父视图的上下左右的边距都相当于可以跟屏幕的左上角(0,0)坐标发生联系。
AutoLayout布局,当然首选Xib来实现,通过一系列约束使得一个View在任何一个大小的屏幕上都能够产生好效果。这个很多人以为Xib并不好用,或许认为用代码更加高档,其实这都是错觉,要知道苹果的可视化编程Nib是苹果的Xcode的开发工程师耶!当年就是因为这个法国人开发了可视化编程方式才被高傲的乔布斯三顾茅庐苦苦留在了苹果公司.而且你们难道不觉得在调节View视图的一些大小和位置时,Xib有无可取代的功能么?就是你都不用编译后在模拟器上跑就能够轻轻松松获得改变参数后的效果!多么便利有趣!另外如果代码适配,大家通常会发现如果约束不到位,很容易出现所有View视图都出不来的情况。所以小技巧就是不要一次性创造完所有的UI,然后再去适配,最好的方法是创造一个View视图,就及时将这个视图能够固定的方向进行固定,而且多用比例来进行适配,同时代码适配时尽量以Iphone6!而且适配时以一行行为准,更关键的是必须提前考虑好那些变化,哪些不发生变化。这样在CEll拉伸时才可以做出取舍!
Masonray特殊情况处理?
1、如果子视图的边界总是跟父视图的边界的满足一定的间距关系,直接使用edges、insets、UIEdgeInsetsMake
2、如果子视图的宽度和高度总是跟父视图的宽度和高度满足一定的加减关系,直接调用size、offset、CGSizeMake
3、如果子视图总是跟父视图的中心存在关系,使用center、offset、CGpointMake
4、还可已使用链式语言,就是一直不停写,通常一个make只能设置一个约束,但是不一定,也可以使用一个make,设置完所有的约束,包括左、右、上、下、宽、高同时等于父视图。
在不删除旧约束的情况下更新和重新构建约束?
- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block
- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block