zoukankan      html  css  js  c++  java
  • drawRect setNeedsDisplay layoutSubViews

    drawRect   setNeedsDisplay layoutSubViews

     

    1、 drawRect: is invoked automaticall,never call it directly!!

    2、 When a view needs to be redrawn,use: 

           - (void)setNeedsDisplay;

    3、在非主线程中调用,需使用如下方法:

          - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait
          - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

    4、setNeedsDisplay是不阻塞的,
         需要自己制造阻塞,
         setNeedsDisplay我理解就是告诉系统,等会帮哥把这块重新画一下。
         系统就知道了,等系统有空了,他就一起画了,
         如果想立即画出来,可能要用setNeedsLayout,
         或者不用drawInRect系列的方式,直接改view.image或者文字,加动画等方式实现吧。

    5、setNeedsDisplay和layoutSubViews

         首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到 UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调  用layoutSubViews,就可以处理子视图中的一些数据。
    宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。

  • 相关阅读:
    rogue 源码 curses图形库实现的
    FreeBSD命令(抄至网络)
    没动力没精神
    加班无聊逛论坛
    2009年的FreeBSD命令(转载的)
    freebsd上源码安装cmake
    freeBSD中fetch下载工具使用
    Mac 安装HomeBrew 踩坑总结
    mybatis插入数据时,自动获取主键的自增id
    java 8对List的处理
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/5659657.html
Copyright © 2011-2022 走看看