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方便出来数据。

  • 相关阅读:
    jQuery.ajax()方法笔记
    Docker安装
    Linux下Nginx+keepalived实现高可用
    Linux安装Nginx
    Redis主从、哨兵、Cluster特性
    Linux搭建redis集群
    Linux搭建redis单机
    HashMap知识总结(jdk1.8)
    如何避免form提交进行页面跳转
    异步上传文件,jquery+ajax,显示进度条
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/5659657.html
Copyright © 2011-2022 走看看