关闭

[iOS setNeedDisplay方法]

标签: iosuiviewcontrolleruiviewsetNeedDis
993人阅读 评论(0) 收藏 举报
分类:

1、在Mac OS中NSWindow的父类是NSResponder,而在i OS 中UIWindow 的父类是UIVIew。程序一般只有一个窗口但是会又很多视图。

2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体、等等。

3、UIViewController 负责创建其管理的视图及在低内存的时候将他们从内存中移除。还为标准的系统行为进行响应。

4、layOutSubViews 可以在自己定制的视图中重载这个方法,用来调整子视图的尺寸和位置。

5、 UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调 用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout 会默认调用layoutSubViews,就可以处理子视图中的一些数据。

宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据

1,UIView的setNeedsDisplay和setNeedsLayout方法
  首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,
 就可以  处理子视图中的一些数据。
综上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。
layoutSubviews在以下情况下会被调用:
1、init初始化不会触发layoutSubviews。
2、addSubview会触发layoutSubviews。
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。
4、滚动一个UIScrollView会触发layoutSubviews。
5、旋转Screen会触发父UIView上的layoutSubviews事件。
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。
7、直接调用setLayoutSubviews。

drawRect在以下情况下会被调用:

 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。drawRect调用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在控制器中,这些View的drawRect就开始画了.这样可以在控制器中设置一些值给View(如果这些View draw的时候需要用到某些变量值).
2、该方法在调用sizeToFit后被调用,所以可以先调用sizeToFit计算出size。然后系统自动调用drawRect:方法。
3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。
4、直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect不能为0。
以上1,2推荐;而3,4不提倡

drawRect方法使用注意点:

1、若使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。如果在其他方法中获取将获取到一个 invalidate的ref并且不能用于画图。drawRect:方法不能手动显示调用,必须通过调用setNeedsDisplay 或者 setNeedsDisplayInRect,让系统自动调该方法。
2、若使用calayer绘图,只能在drawInContext: 中(类似于drawRect)绘制,或者在delegate中的相应方法绘制。同样也是调用setNeedDisplay等间接调用以上方法
3、若要实时画图,不能使用gestureRecognizer,只能使用touchbegan等方法来掉用setNeedsDisplay实时刷新屏幕
0
0
查看评论

CALayer的needsDisplayForKey方法使用说明

今天为大家介绍的是如何在执行动画的时候,完成Core Graphics 图形的绘制工作。 主要把重心放在needsDisplayForKey 方法上面。先看看实现绘制的动画效果图。 一、理论基础 首先了解下layer自己的属性如何实现动画。 1. layer首次加载时会调用 +(...
  • sinat_27706697
  • sinat_27706697
  • 2015-11-09 16:40
  • 2268

UIView的setNeedsLayout,layoutIfNeeded等方法介绍

关于UIView的Layer,IOS提供了三个方法: 1、layoutSubviews 在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6开始)的版本,此方法的缺省实现是使用你设置在此view上面的constraints(Autolayou...
  • sinat_25544827
  • sinat_25544827
  • 2015-03-21 20:41
  • 3360

[iOS setNeedDisplay方法]

1、在Mac OS中NSWindow的父类是NSResponder,而在i OS 中UIWindow 的父类是UIVIew。程序一般只有一个窗口但是会又很多视图。2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体、等等。3...
  • iOSTianNan
  • iOSTianNan
  • 2017-01-03 15:32
  • 993

关于ios中的setNeedsDisplay和setNeedsLayout

文章转自:http://blog.csdn.net/xie_kun/article/details/7270546     我们可能对这两个命令并不陌生,setNeedsDisplay调用drawRect方法来实现view的绘制,而setNeedsLayout则调用layout...
  • zhenweicao
  • zhenweicao
  • 2012-10-26 09:17
  • 8918

youmi

内存管理.md Code.m项目 你项目中遇到什么问题怎么解决的1,one,window scrollview top1 点击 状态栏 上滑顶部 2, 截取 cell 点击 计算点击商品次数 3, uitableview 滑动卡4,后台用什么数据库 5,用户订单提醒 提醒用什么消息推送模式 你为什...
  • ChinHan
  • ChinHan
  • 2015-12-27 01:10
  • 549

Cocoa+OpenGL编程(一):一个简单的例子

工具:Xcode 4.2 开发环境:Cocoa,OpenGL,Objective-C 一、创建工程MyOpenGL 打开Xcode,选择Create a new Xcode project, 然后在弹出地窗口中选择 Cocoa Application, 下一步以后输入工程的名字:M...
  • wangchenggggdn
  • wangchenggggdn
  • 2013-01-11 15:00
  • 971

iOS SetNeedDisplay

  • 2014-03-16 23:20
  • 71KB
  • 下载

UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

layoutSubviews总结 ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit ——————- - (void)layoutSubviews - (void)layoutIfNee...
  • meegomeego
  • meegomeego
  • 2014-10-08 10:19
  • 51645

IOS方法定义和使用

FR:海涛高软(QQ技术交流群:386476712)
  • qq_15267341
  • qq_15267341
  • 2017-02-05 10:39
  • 727

iOS的动态创建实例方法和实现消息转发

做了几年的iOS开发一直没有写博客,一直怕写的不好误导大家,今儿第一次在csdn写点干货,代码下载地址https://github.com/zhulang/messageForward 实现动态添加方法 (1)为了编译通过,我们需要通过performSelector开头的方法调用 TestTrans...
  • u012989180
  • u012989180
  • 2016-05-11 16:26
  • 1296
    个人资料
    • 访问:354598次
    • 积分:4975
    • 等级:
    • 排名:第6739名
    • 原创:141篇
    • 转载:114篇
    • 译文:0篇
    • 评论:32条
    最新评论