本周的授课内容主要是页面的布局,其中比较重要的是Autolayout 一节
【界面布局 - View的定位】
iOS界面初解
UIKit的坐标系
按照用户习惯,坐标原点设在了左上的位置
描述点:
CGPointMake(x,y)
CGPointEqualToPoint(p1,p2)
描述尺寸:
CGSizeMake(w,h) //width,height
CGSizeEqualToSize (sz1,sz2)
描述形状(矩形)
CGRectMake(o,s) //oringin,sizie
CGRectEqualToRect(r1,r2)
CGRextInset(r,dx,dy) //矩形缩放
frame(框)
可以用 view.frame:CGRect 把view里的rect取出来,并可进行修改,更改调入的Rect,但是应当替换新的Rect而不是直接修改属性数值,否则会报错。
bounds(边界)
上级视图提供放置子视图的区域
(注意绝对坐标和相对坐标的区别)
bounds.origin 的作用
view 定位 - Center
视图的中心点
view.frame.origin = center - size/2
图形的变化(缩放)都是以center为中心进行
【Autoresizing】
相较于Autolayout的优势
更方便(尤其是处理一些简单的代码时)
在interface里构造的Nib(stroyboard和Xib),由他们实例化出来的界面对象默认都会开着Autoresizing。(另:UIView. autoresizesSubviews默认为YES,可以设为NO关闭)
【Autolayout】
基础知识:
->用约束条件(constraint)描述View定位属性之间的关系
->Autoresizing只能描述上下级视图之间的关系
->Autolaout支持更多样的视图关系和定位属性
Autolaout 是一种Opt-in技术
->可以非常灵活的开关
->nib 有 “Use Auto Layout”选项
->可以用代码添加constraint,从而在涉及的view上启用Autolayout
->UIView子类自己决定
- requiresConstraintBasedLayout返回YES
几处有用的Autolayout操作处