动画图片-计时器画雪花

通过UIImage自身方法绘制图片步骤

  1. 新建一个类,继承自UIView(略)

  2. 创建定时器,定时调用setNeedsDisplay

  3. 在-(void)drawRect:(CGRect)rect方法实现下述几步

  • 加载图片

  • 通过UIImage自身方法绘制图片到view上面

  • 设置变化

- (void)awakeFromNib
{
// 创建定时器
// 如果每隔一段时间重绘,一般不使用NSTimer(因为不够及时)// 每次屏幕自动刷新60次/秒,每次刷新的时候只会把当前需要刷新的view重绘(即绑定了刷新标识的view)
// setNeedsDisplay:重绘,实质是给当前控件绑定一个刷新的标识,在下一次屏幕刷新就会重绘

    CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(setNeedsDisplay)];

    // 添加到主运行循环,才会触发这个定时器
    [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

    // 每次刷新的时候调用,每次刷新就给当前view绑定一个刷新标示,表示每次刷新的时候都需要重新绘制当前view

}

- (void)drawRect:(CGRect)rect {

    static CGFloat snowY = 0;
// 加载图片
    UIImage *image = [UIImage imageNamed:@"雪花"];
// 绘制图片
    [image drawAtPoint:CGPointMake(50, snowY)];

// 设置变化
    snowY += 10;

    if (snowY > rect.size.height) {
        snowY = 0;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Quartz2D以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 956评论 0 3
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,323评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,750评论 6 30
  • 文/婉兮 1 我上了四年大学,毁掉了好好的身体,平生最后悔之事莫过于此。 那一纸化验单摆在医生面前时,她漫不经心地...
    婉xi阅读 1,037评论 6 21
  • 碧蓝的河水静静的向远方流去,左岸一排排的桃花树上,朵朵桃花争相怒放。右岸一排排的柳树上,每一条柳枝都抽出了嫩绿的叶...
    君兮阅读 960评论 8 8

友情链接更多精彩内容