#import "myview.h"

@interface myview ()
@property(nonatomic,assign) float imageY;
@end

@implementation myview
-(instancetype)initWithFrame:(CGRect)frame
{
    if ([super initWithFrame:frame]) {
        //刷帧,默认每秒60次,不会自动启动,需要加到RunLoop中
        CADisplayLink *display=[CADisplayLink displayLinkWithTarget:self selector:@selector(updateimg)];
        [display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

        //一般用于更新非界面数据
//        [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateimg) userInfo:nil repeats:YES];
    }
    return self;
}

-(void)updateimg
{

    //drawRect:方法不能由我们自己手动调用,只能由系统来调用。
    //drawRect:调用的时机:当第一次显示或者一个重绘事件发生时调用。
   //    setNeedsDisplay方法:重新绘制,调用这个方法就会通知自定义的view重新绘制画面,调用drawRect:。
   //    提示:当一个view从xib或storyboard创建出来时,会调用awakefromnib方法。
    [self setNeedsDisplay];
}
-(void)awakeFromNib
{
    NSLog(@"awakefromnib");
}
- (void)drawRect:(CGRect)rect {

    self.imageY+=3;
    if (self.imageY>rect.size.height) {
        self.imageY=0;
    }
     UIImage *img=[UIImage imageNamed:@"img.jpg"];
     [img drawAtPoint:CGPointMake(20, self.imageY)];
}
@end

运行效果:图片往下循环移动

Quart2D setNeedsDisplay的更多相关文章

  1. drawRect与setNeedsDisplay简单介绍

    - (void)drawRect:(CGRect)rect { } p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: ...

  2. UIView的setNeedsDisplay和setNeedsLayout

    1,UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  3. setNeedsDisplay,setNeedsLayout

    UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraph ...

  4. setNeedsDisplay和setNeedsLayout

    1,UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  5. UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout

    1,UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  6. layoutSubviews,setNeedsDisplay

    一 , layoutSubviews何时调用的问题 //layoutSubviews何时调用的问题,这个方法是当你需要在调整subview的大小的时候需要重写(我这个翻译不严谨,以下是原文:You s ...

  7. 【转】 UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout

    原文:http://blog.sina.com.cn/s/blog_923fdd9b0101b2b4.html 1.在Mac OS中NSWindow的父类是NSResponder,而在iOS 中UIW ...

  8. setNeedsDisplay 和 setNeedsLayout-b

    setNeedsDisplay: Marks the receiver’s entire bounds rectangle as needing to be redrawn. drawRect: Th ...

  9. setNeedsDisplay setNeedsLayout

    setNeedsDisplay调用drawRect方法来实现view的绘制,而setNeedsLayout则调用layoutSubView来实现view中subView的重新布局 转自  http:/ ...

随机推荐

  1. sentiwordnet的简单使用

    # Example line: # POS     ID     PosS  NegS SynsetTerm#sentimentscore    Desc # a   00009618  0.5    ...

  2. 调用DLL窗体-Delphi实例

    (一)通过向导DLL Wizard新建一个动态链接库,取名为:DLLPro.dpr.说明:当在DLL工程文件中使用了String类型时,要有 uses ShareMem ,不过建议使用PChar类型. ...

  3. Jquery学习(表单-Button)-----jQuery1.4.2

    <html> <head> <base href="<%=basePath%>"> <title>My JSP 'jqu ...

  4. python--求参赛两队所有可能的比赛组合情况

    朋友遇到一个面试题,让我帮忙实现,题目如下: 红队有A1,B1,C1三名队员,蓝队有A2,B2,C2三名队员,每轮比赛各队出一名队员参加,一名队员只能参加一次比赛,假设A1不会和B2打,B1不会和B2 ...

  5. Maven 集成Tomcat7插件

    Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题.本文将介绍,Maven如何介绍Tomcat插件. Maven Tomcat插件现在主要 ...

  6. 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象

    本文需要对C#里的LINQ.Lambda 表达式 .委托有一定了解. 在工作中,经常遇到需要对比两个集合的场景,如: 页面集合数据修改,需要保存到数据库 全量同步上游数据到本系统数据库 在这些场景中, ...

  7. JQuery Mobile - 导航栏选中状态代码

    class="ui-btn-active" 参考: https://wizardforcel.gitbooks.io/w3school-jqmobile/content/8.htm ...

  8. Spring Boot中使用Redis数据库

    引入依赖 Spring Boot提供的数据访问框架Spring Data Redis基于Jedis.可以通过引入spring-boot-starter-redis来配置依赖关系. <depend ...

  9. 小记 ArchLinux 下 Typora 无法输入中文

    今天准备写一篇 Linux 下的打印机文章,打开 Typora 时我发现不管我怎么设置都无法输入中文. pacman -R typora pacman -S typora 重新安装是无效的,我突然想起 ...

  10. spring mvc 使用kaptcha配置生成验证码实例

    SpringMVC整合kaptcha(验证码功能) 一.依赖 <dependency> <groupId>com.github.penggle</groupId> ...