一、通过slider控制圆的缩放
1.实现过程
新建一个项目,新建一个继承自uiview的类,并和storyboard中自定义的view进行关联。
界面搭建,如图:
代码示例:
yyviewcontroller.m文件


yyview.h文件


yyview.m文件


效果:
2.注意点:
drawrect:方法不能由我们自己手动调用,只能由系统来调用。
drawrect:调用的时机:当第一次显示或者一个重绘事件发生时调用。
setneedsdisplay方法:重新绘制,调用这个方法就会通知自定义的view重新绘制画面,调用drawrect:。
提示:当一个view从xib或storyboard创建出来时,会调用awakefromnib方法。
3.补充
可以通过slider的value属性监听值的改变,当然也可以指定value的取值范围(这里设定为0~100)。
二、刷帧效果
说明:把雪花状的图片绘制到view上,实现图片在视图中下落的效果。
1.实现代码:


实现效果
2.重要说明
(1)下面两个方法的调用顺序
-(void)awakefromnib
-(id)initwithcoder:(nscoder *)adecoder
提示:如果view是从xib或storyboard中创建可以调用awakefromnib方法,归档。从文件创建view,其实会先调用initwithcoder这个方法。xib和storyboard也是文件。
上面两个方法,-(id)initwithcoder:(nscoder *)adecoder会先调用。实现该方法需要实现nscoding协议,由于创建的uiview默认就已经实现了该协议。
可以进入到头文件查看:
运行新建的程序,通过打印可以验证上面两个方法的调用顺序。
(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次。该定时器创建之后,默认是不会执行的,需要把它加载到消息循环中