您的位置:首页 > 移动开发 > IOS开发

IOS setNeedsDisplay setNeedsLayout注意

2015-12-18 14:30 1031 查看
署名: 那年高中今日还

IOS setNeedsDisplay, setNeedsLayout

UIView的setNeedsDisplay 和 setNeedsLayout方法.这两个方法都是异步执行的。

1. Display为了展示,系统为自动调用drawRect方法.

2. Layout 为了布局, 系统为自动调用 layoutSubviews方法.

关于drawRect方法:

1. 在drawRect方法中才能拿到 “ 可用的画图Context”,开始在画布上画画并且展示在 view上;

2. drawRect调用情形: (view要被展示之前)

2.1 viewDidLoad方法之后会被调用 (需要画view中所有subviews)

2.2sizeToFit 方法后被调用 (sizeToFit 为要求系统自动布局方法 , 需要重新画 subviews)

2.3contentMode属性值 被设置为Redraw模式时,比较少用

2.4 直接调用setNeedsDisplay方法时,会调用drawRect;

之所以要重载该方法,是需要在drawRect中进行画图.

DrawRect方法画图注意:

1. 如果是用UIView绘图,只能在drawRect方法中获取相应的contextRef对象并且绘图。在view的其他地方获取的contextRef对象是没有作用的;


2. 如果使用Layer画图,智能在 drawInContext:中绘制;才能拿到有用的绘图对象;

关于layoutSubviews被调用情形 (subview,frame改变时)

1. viewinit时不会被调用

2. addSubview(增加子view时)会被调用

3. 设置view frame时会被触发;

4. 滚动scrollview时会被触发

5. 旋转屏幕会触发

6. *****改变subview的大小时,会触发superView的layoutSubvuews方法;

7. ***** 调用setNeedsLayout方法时候触发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: