UIView动画传参

- (void)viewDidLoad {

[super viewDidLoad];

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 20, 30,30)];

view.backgroundColor= [UIColor orangeColor];

[self.view addSubview:view];

//__bridge桥接因为context参数是void*类型,而view是UIView类型,不匹配,所以使用__bridge桥接进行类型匹配

[UIView beginAnimations:nil context:(__bridgevoid*)(view)];

[UIView setAnimationDuration:2];

//设置代理

[UIView setAnimationDelegate:self];

//绑定方法

[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

view.frame=CGRectMake(200, 200, 50, 50);

[UIView commitAnimations];

}

//自己写的方法不能进行传参

//-(void)change:(UIView *)view

//系统提示的方法没有context这个参数,所以也不能传参

//-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag

//这个方法是在setAnimationDidStopSelector这个方法定义的时候给的,系统把它注释了,需要传参数时把它复制出来用就可以了

- (void)animationDidStop:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {

//把参数context转换为UIView类型的对象

UIView *view = (__bridgeUIView*)context;

// NSLog(@"view");

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:2];

view.backgroundColor= [UIColor blueColor];

[UIView commitAnimations];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容