天天看点

iOS开发UI篇—Quartz2D简单使用(三)

一、通过slider控制圆的缩放

1.实现过程

新建一个项目,新建一个继承自uiview的类,并和storyboard中自定义的view进行关联。

界面搭建,如图:

代码示例:

yyviewcontroller.m文件

iOS开发UI篇—Quartz2D简单使用(三)
iOS开发UI篇—Quartz2D简单使用(三)

yyview.h文件

iOS开发UI篇—Quartz2D简单使用(三)
iOS开发UI篇—Quartz2D简单使用(三)

yyview.m文件

iOS开发UI篇—Quartz2D简单使用(三)
iOS开发UI篇—Quartz2D简单使用(三)

效果:

iOS开发UI篇—Quartz2D简单使用(三)
iOS开发UI篇—Quartz2D简单使用(三)

2.注意点:

drawrect:方法不能由我们自己手动调用,只能由系统来调用。

drawrect:调用的时机:当第一次显示或者一个重绘事件发生时调用。

setneedsdisplay方法:重新绘制,调用这个方法就会通知自定义的view重新绘制画面,调用drawrect:。

提示:当一个view从xib或storyboard创建出来时,会调用awakefromnib方法。

3.补充

iOS开发UI篇—Quartz2D简单使用(三)

可以通过slider的value属性监听值的改变,当然也可以指定value的取值范围(这里设定为0~100)。

二、刷帧效果

说明:把雪花状的图片绘制到view上,实现图片在视图中下落的效果。

1.实现代码:

iOS开发UI篇—Quartz2D简单使用(三)
iOS开发UI篇—Quartz2D简单使用(三)

实现效果

iOS开发UI篇—Quartz2D简单使用(三)
iOS开发UI篇—Quartz2D简单使用(三)

2.重要说明

(1)下面两个方法的调用顺序

-(void)awakefromnib

-(id)initwithcoder:(nscoder *)adecoder

提示:如果view是从xib或storyboard中创建可以调用awakefromnib方法,归档。从文件创建view,其实会先调用initwithcoder这个方法。xib和storyboard也是文件。

上面两个方法,-(id)initwithcoder:(nscoder *)adecoder会先调用。实现该方法需要实现nscoding协议,由于创建的uiview默认就已经实现了该协议。

可以进入到头文件查看:

iOS开发UI篇—Quartz2D简单使用(三)

运行新建的程序,通过打印可以验证上面两个方法的调用顺序。

iOS开发UI篇—Quartz2D简单使用(三)

(2)两个定时器

第一个:

[nstimer scheduledtimerwithtimeinterval:0.1 target:self selector:@selector(updateimage) userinfo:nil repeats:yes];

说明: nstimer一般用于定时的更新一些非界面上的数据,告诉多久调用一次

第二个:

cadisplaylink *display= [cadisplaylink displaylinkwithtarget:self selector:@selector(updateimage)];

[display addtorunloop:[nsrunloopmainrunloop] formode:nsdefaultrunloopmode];

  说明: cadisplaylink刷帧,默认每秒刷新60次。该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中