博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CATransaction(参考其他博客敲)
阅读量:6195 次
发布时间:2019-06-21

本文共 2817 字,大约阅读时间需要 9 分钟。

#import "ViewController.h" @interface ViewController ()@property(nonatomic,strong)CALayer *calayer;@end @implementation ViewController - (void)viewDidLoad {    [super viewDidLoad];    UIButton *btn =[UIButton buttonWithType:UIButtonTypeSystem];    btn.frame=CGRectMake(100, 100, 100, 50) ;    btn.tag=1;    [btn setTitle:@"隐式事务按钮" forState:UIControlStateNormal];    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];    [btn setTintColor:[UIColor blackColor]];    [btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:btn];         UIButton *btn1 =[UIButton buttonWithType:UIButtonTypeSystem];    btn1.frame=CGRectMake(200, 100, 100, 50) ;    btn1.tag=2;    [btn1 setTitle:@"显式事务按钮" forState:UIControlStateNormal];    [btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];    [btn1 setTintColor:[UIColor blackColor]];    [btn1 addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:btn1];    //    CATransaction 事务类,可以对多个layer的属性同时进行修改.它分隐式事务,和显式事务.//    区分隐式动画和隐式事务:隐式动画通过隐式事务实现动画 。修改Calayer的属性属于隐式事务//    区分显式动画和显式事务:显式动画有多种实现方式,显式事务是一种实现显式动画的方式。     //隐式事务    self.calayer=[CALayer layer];    self.calayer.bounds=CGRectMake(150, 150, 100, 100);    self.calayer.position=CGPointMake(100, 200);    self.calayer.backgroundColor=[UIColor redColor].CGColor;    self.calayer.borderColor = [UIColor blackColor].CGColor;    self.calayer.opacity = 1.0f;    [self.view.layer addSublayer:self.calayer];    [super viewDidLoad]; }-(void)btnclick:(id)sender{    UIButton *btn=(UIButton *)sender;    if (btn.tag==1) {        [CATransaction setDisableActions:YES];        self.calayer.cornerRadius = (self.calayer.cornerRadius == 0.0f) ? 30.0f : 0.0f;        self.calayer.opacity = (self.calayer.opacity == 1.0f) ? 0.5f : 1.0f;    }    else    {        //事务嵌套        [CATransaction begin];        [CATransaction begin];        [CATransaction setDisableActions:YES];        self.calayer.opacity = (self.calayer.opacity == 1.0f) ? 0.5f : 1.0f;        [CATransaction commit];        //上面的动画并不会立即执行,需要等最外层的commit        [NSThread sleepForTimeInterval:3];        //显式事务默认开启动画效果,kCFBooleanTrue关闭        [CATransaction setValue:(id)kCFBooleanFalse                         forKey:kCATransactionDisableActions];        //动画执行时间        [CATransaction setValue:[NSNumber numberWithFloat:10.0f] forKey:kCATransactionAnimationDuration];        //[CATransaction setAnimationDuration:[NSNumber numberWithFloat:5.0f]];        self.calayer.cornerRadius = (self.calayer.cornerRadius == 0.0f) ? 30.0f : 0.0f;        [CATransaction commit];             }     }- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.} @end

转载地址:http://sifca.baihongyu.com/

你可能感兴趣的文章
Redis从入门到精通:初级篇(转)
查看>>
代码质量与上线压力
查看>>
Flymeos插桩适配教程
查看>>
Aspose.Pdf for Java 4.0 发布
查看>>
SQL Server 自定义函数(1)把某一列多行的值拼接成一个字符串
查看>>
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
查看>>
C#的delegate简单练习
查看>>
还在用PS磨皮去皱?看看如何用神经网络高度还原你的年轻容貌!
查看>>
YARN中内存的设置
查看>>
ubuntu使用
查看>>
viewport
查看>>
leetcode:Longest Substring Without Repeating Characters
查看>>
核心动画coreanimation总结(转)
查看>>
Python自动化运维之28、Django(二)
查看>>
带你理解JavaScript闭包
查看>>
vim 编辑器使用技巧
查看>>
软件工程个人项目-Word frequency program by11061167龚少波
查看>>
将分页功能从JSP页面中独立出来
查看>>
C++STL之vector用法总结
查看>>
虚拟内存安排
查看>>