- 浏览: 2196183 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
一、简单介绍
CAPropertyAnimation的子类
属性解析:
随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue
如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。
比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0)
二、平移动画
代码示例:
代码说明:
第42行设置的keyPath是@"position",说明要修改的是CALayer的position属性,也就是会执行平移动画
第44,45行,这里的属性接收的时id类型的参数,因此并不能直接使用CGPoint这种结构体类型,而是要先包装成NSValue对象后再使用。
默认情况下,动画执行完毕后,动画会自动从CALayer上移除,CALayer又会回到原来的状态。为了保持动画执行后的状态,可以加入第48,50行代码
byValue和toValue的区别,前者是在当前的位置上增加多少,后者是到指定的位置。
执行效果:
设置代理:设置动画的代理,可以监听动画的执行过程,这里设置控制器为代理。
代码示例:
打印position的属性值,验证图层的属性值还是动画执行前的初始值{50,50},并没有真正被改变为{200,300}。
三、缩放动画
实现缩放动画的代码示例:
实现效果:
四、旋转动画
代码示例:
实现效果:
提示:如果要让图形以2D的方式旋转,只需要把CATransform3DMakeRotation在z方向上的值改为1即可。
anima.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2+M_PI_4, 1, 1, 0)];
四、补充
可以通过transform(KVC)的方式来进行设置。
代码示例(平移):
实现效果:
绘制的图形在y的方向上移动100个单位。
CAPropertyAnimation的子类
属性解析:
- fromValue:keyPath相应属性的初始值
- toValue:keyPath相应属性的结束值
随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue
如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。
比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0)
二、平移动画
代码示例:
// // YYViewController.m // 07-核心动画(基础动画) // // Created by apple on 14-6-21. // Copyright (c) 2014年 itcase. All rights reserved. // #import "YYViewController.h" @interface YYViewController () @property(nonatomic,strong)CALayer *myLayer; @end @implementation YYViewController - (void)viewDidLoad { [super viewDidLoad]; //创建layer CALayer *myLayer=[CALayer layer]; //设置layer的属性 myLayer.bounds=CGRectMake(0, 0, 50, 80); myLayer.backgroundColor=[UIColor yellowColor].CGColor; myLayer.position=CGPointMake(50, 50); myLayer.anchorPoint=CGPointMake(0, 0); myLayer.cornerRadius=20; //添加layer [self.view.layer addSublayer:myLayer]; self.myLayer=myLayer; } //设置动画(基础动画) -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //1.创建核心动画 // CABasicAnimation *anima=[CABasicAnimation animationWithKeyPath:<#(NSString *)#>] CABasicAnimation *anima=[CABasicAnimation animation]; //1.1告诉系统要执行什么样的动画 anima.keyPath=@"position"; //设置通过动画,将layer从哪儿移动到哪儿 anima.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)]; anima.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 300)]; //1.2设置动画执行完毕之后不删除动画 anima.removedOnCompletion=NO; //1.3设置保存动画的最新状态 anima.fillMode=kCAFillModeForwards; //2.添加核心动画到layer [self.myLayer addAnimation:anima forKey:nil]; } @end
代码说明:
第42行设置的keyPath是@"position",说明要修改的是CALayer的position属性,也就是会执行平移动画
第44,45行,这里的属性接收的时id类型的参数,因此并不能直接使用CGPoint这种结构体类型,而是要先包装成NSValue对象后再使用。
默认情况下,动画执行完毕后,动画会自动从CALayer上移除,CALayer又会回到原来的状态。为了保持动画执行后的状态,可以加入第48,50行代码
byValue和toValue的区别,前者是在当前的位置上增加多少,后者是到指定的位置。
执行效果:
设置代理:设置动画的代理,可以监听动画的执行过程,这里设置控制器为代理。
代码示例:
#import "YYViewController.h" @interface YYViewController () @property(nonatomic,strong)CALayer *myLayer; @end @implementation YYViewController - (void)viewDidLoad { [super viewDidLoad]; //创建layer CALayer *myLayer=[CALayer layer]; //设置layer的属性 myLayer.bounds=CGRectMake(0, 0, 50, 80); myLayer.backgroundColor=[UIColor yellowColor].CGColor; myLayer.position=CGPointMake(50, 50); myLayer.anchorPoint=CGPointMake(0, 0); myLayer.cornerRadius=20; //添加layer [self.view.layer addSublayer:myLayer]; self.myLayer=myLayer; } //设置动画(基础动画) -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //1.创建核心动画 // CABasicAnimation *anima=[CABasicAnimation animationWithKeyPath:<#(NSString *)#>] CABasicAnimation *anima=[CABasicAnimation animation]; //1.1告诉系统要执行什么样的动画 anima.keyPath=@"position"; //设置通过动画,将layer从哪儿移动到哪儿 anima.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)]; anima.toValue=[NSValue valueWithCGPoint:CGPointMake(200, 300)]; //1.2设置动画执行完毕之后不删除动画 anima.removedOnCompletion=NO; //1.3设置保存动画的最新状态 anima.fillMode=kCAFillModeForwards; anima.delegate=self; //打印 NSString *str=NSStringFromCGPoint(self.myLayer.position); NSLog(@"执行前:%@",str); //2.添加核心动画到layer [self.myLayer addAnimation:anima forKey:nil]; } -(void)animationDidStart:(CAAnimation *)anim { NSLog(@"开始执行动画"); } -(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { //动画执行完毕,打印执行完毕后的position值 NSString *str=NSStringFromCGPoint(self.myLayer.position); NSLog(@"执行后:%@",str); } @end
打印position的属性值,验证图层的属性值还是动画执行前的初始值{50,50},并没有真正被改变为{200,300}。
三、缩放动画
实现缩放动画的代码示例:
// // YYViewController.m // 08-核心动画平移 // // Created by apple on 14-6-21. // Copyright (c) 2014年 itcase. All rights reserved. // #import "YYViewController.h" @interface YYViewController () @property(nonatomic,strong)CALayer *myLayer; @end @implementation YYViewController - (void)viewDidLoad { [super viewDidLoad]; //创建layer CALayer *myLayer=[CALayer layer]; //设置layer的属性 myLayer.bounds=CGRectMake(0, 0, 150, 60); myLayer.backgroundColor=[UIColor yellowColor].CGColor; myLayer.position=CGPointMake(50, 50); myLayer.anchorPoint=CGPointMake(0, 0); myLayer.cornerRadius=40; //添加layer [self.view.layer addSublayer:myLayer]; self.myLayer=myLayer; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //1.创建动画 CABasicAnimation *anima=[CABasicAnimation animationWithKeyPath:@"bounds"]; //1.1设置动画执行时间 anima.duration=2.0; //1.2设置动画执行完毕后不删除动画 anima.removedOnCompletion=NO; //1.3设置保存动画的最新状态 anima.fillMode=kCAFillModeForwards; //1.4修改属性,执行动画 anima.toValue=[NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)]; //2.添加动画到layer [self.myLayer addAnimation:anima forKey:nil]; } @end
实现效果:
四、旋转动画
代码示例:
// // YYViewController.m // 09-核心动画旋转 // // Created by apple on 14-6-21. // Copyright (c) 2014年 itcase. All rights reserved. // #import "YYViewController.h" @interface YYViewController () @property(nonatomic,strong)CALayer *myLayer; @end @implementation YYViewController - (void)viewDidLoad { [super viewDidLoad]; //创建layer CALayer *myLayer=[CALayer layer]; //设置layer的属性 myLayer.bounds=CGRectMake(0, 0, 150, 60); myLayer.backgroundColor=[UIColor yellowColor].CGColor; myLayer.position=CGPointMake(50, 50); myLayer.anchorPoint=CGPointMake(0, 0); myLayer.cornerRadius=40; //添加layer [self.view.layer addSublayer:myLayer]; self.myLayer=myLayer; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //1.创建动画 CABasicAnimation *anima=[CABasicAnimation animationWithKeyPath:@"transform"]; //1.1设置动画执行时间 anima.duration=2.0; //1.2修改属性,执行动画 anima.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2+M_PI_4, 1, 1, 0)]; //1.3设置动画执行完毕后不删除动画 anima.removedOnCompletion=NO; //1.4设置保存动画的最新状态 anima.fillMode=kCAFillModeForwards; //2.添加动画到layer [self.myLayer addAnimation:anima forKey:nil]; } @end
实现效果:
提示:如果要让图形以2D的方式旋转,只需要把CATransform3DMakeRotation在z方向上的值改为1即可。
anima.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2+M_PI_4, 1, 1, 0)];
四、补充
可以通过transform(KVC)的方式来进行设置。
代码示例(平移):
#import "YYViewController.h" @interface YYViewController () @property(nonatomic,strong)CALayer *myLayer; @end @implementation YYViewController - (void)viewDidLoad { [super viewDidLoad]; //创建layer CALayer *myLayer=[CALayer layer]; //设置layer的属性 myLayer.bounds=CGRectMake(0, 0, 150, 60); myLayer.backgroundColor=[UIColor yellowColor].CGColor; myLayer.position=CGPointMake(50, 50); myLayer.anchorPoint=CGPointMake(0, 0); myLayer.cornerRadius=40; //添加layer [self.view.layer addSublayer:myLayer]; self.myLayer=myLayer; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //1.创建动画 CABasicAnimation *anima=[CABasicAnimation animation]; anima.keyPath=@"transform"; //1.1设置动画执行时间 anima.duration=2.0; //1.2修改属性,执行动画 anima.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 100, 1)]; //1.3设置动画执行完毕后不删除动画 anima.removedOnCompletion=NO; //1.4设置保存动画的最新状态 anima.fillMode=kCAFillModeForwards; //2.添加动画到layer [self.myLayer addAnimation:anima forKey:nil]; }
实现效果:
绘制的图形在y的方向上移动100个单位。
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 626本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1099颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 991从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1166Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1004Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 839前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 925监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 800在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 948最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1327##MediaQuery MediaQuery.of(con ... -
Mac上制作Centos7系统U盘安装盘
2019-07-23 11:25 639Centos7 下载地址: https://www.cento ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1113当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 776setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1506问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 766底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1781点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1370import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2313TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1549一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 864Flutter最近很火,我抽出了一点时间对Flutter进行了 ...
相关推荐
在iOS开发中,UI设计和交互是至关重要的部分,而核心动画(Core Animation)则是实现这些高级视觉效果的关键技术。本文将深入探讨如何利用核心动画来创建动态、丰富的用户界面,以实现时钟和幸运转盘这样的功能。 ...
最后,"仿iOSUI动画"项目中的源代码和资源文件可以帮助开发者更好地理解和实现这些效果。通过分析和学习提供的文件,可以了解到如何将这些动画集成到自己的项目中,并根据需求进行调整和优化。同时,这也有助于提升...
在iOS系统中,UI(User Interface)设计是用户体验的核心部分,它强调简洁、直观和美观。iOS系统的UI风格以其独特的设计原则和规范,为用户提供了高效且愉悦的交互体验。"iOS系统UI风格片头动画ppt模板"是设计者为了...
IOS之UI风格片头动画PPT模板.pptx
核心动画是苹果公司为其iOS操作系统提供的一套强大的动画技术框架,它允许开发者利用2D和3D视觉效果增强...随着iOS应用开发的不断演进,核心动画框架也在不断更新和完善,为开发者提供更多的可能性和创造力的发挥空间。
在iOS开发领域,UI设计是构建用户界面的关键环节,它直接影响到应用的...以上就是围绕"iOS开发 汤姆猫 UI基础"这个主题所涉及的主要知识点,通过这些技术,开发者可以构建出一个生动、有趣且用户体验良好的汤姆猫应用。
在iOS开发中,Core Animation是实现丰富视觉效果和流畅动态体验的关键框架。它不仅提供了基本的动画功能,还允许开发者深入定制和优化动画效果。本教程深入探讨iOS核心动画的高级技巧,通过实例代码帮助开发者从初级...
首先,转场动画是iOS系统中UI设计的重要组成部分,它涉及到UIViewController的生命周期和UINavigationController的管理。在标准的iOS应用中,页面间的跳转通常由系统自动处理,但这些默认动画可能无法满足所有设计...
"iOS开发进阶篇-成为一个iOS开发高手"这份资料正为此目标提供了全面的指导。它深入探讨了iOS开发的核心概念和技术,旨在帮助开发者们从初级水平提升到高级专家水平。 首先,这份资料可能涵盖了Swift编程语言的高级...
在iOS开发中,创建引人入胜的用户体验是至关重要的,而“iOS根据声波曲线动画”就是一个很好的示例,它结合了音频处理与动画效果,使得应用更加生动有趣。这个项目利用声波分贝峰值数据,通过贝塞尔曲线来绘制动画,...
这个"ios开发 简单demo"包含了几个关键的学习点:动画、时钟、计算器以及常用UI界面。这些元素是构建iOS应用程序的基础,让我们逐一深入探讨。 1. **动画**:在iOS开发中,动画是提升用户体验的重要手段。UIKit框架...
在iOS开发中,实现动态效果,尤其是直播场景中的点赞动画,是提升用户体验的重要一环。本项目以"ios-iOS直播点赞动画,iOS直播心型点赞动画.zip"为标题,显然是一个使用Swift语言编写的iOS应用示例,专门用于创建心形...
在这个“iOS开发 - 第02篇 - UI进阶 - 14 - 彩票(第一天)”的主题中,我们将探讨如何创建一个彩票应用的用户界面,这涉及到一系列与iOS界面设计和技术相关的知识点。 首先,彩票应用通常涉及到动态更新的数字展示,...
这个源码包“iOS开发进阶篇-成为iOS开发高手”提供了丰富的学习材料,旨在帮助你深入理解iOS开发的核心概念和技术。以下将对这个资源包中的关键知识点进行详细阐述: 1. **Objective-C与Swift的比较**: - ...
在iOS开发领域,掌握基础知识是至关重要的,尤其是Objective-C(OC)语法、用户界面(UI)设计以及网络编程。这些知识点构成了"ios及ui基础"的主题,是每个iOS开发者必须熟练掌握的基础技能。 首先,Objective-C是...
**无线互联ios UI 基础部分PPT**是一份详尽介绍iOS应用程序用户界面(UI)开发的教程资料,包含六章内容丰富的PPT,旨在帮助开发者掌握iOS平台上的UI设计与实现。以下是每章内容的概览: **第一章:iPhone开发入门*...
苹果提供了Core Animation框架,它是iOS系统中用于创建2D图形和动画的核心组件。通过Core Animation,开发者可以轻松地创建复杂的视图动画,包括平移、旋转、缩放等效果。 要实现扑克牌翻转效果,我们首先需要创建...
这个“SwiftUI iOS 开发入门教学”压缩包文件显然是为初学者设计的,提供了学习SwiftUI的基本资源。让我们深入探讨SwiftUI的核心概念、优势以及如何开始你的SwiftUI开发之旅。 首先,SwiftUI的出现简化了UI编程,...
在iOS应用UI开发中,创建基础动画是提升用户体验的关键元素之一。本文将通过实例深入讲解如何使用Core Animation框架中的CAPropertyAnimation子类,特别是CABasicAnimation,来实现平移动画。 首先,...
本篇文章将深入探讨iOS基础动画的概念、原理及其在实际开发中的应用,旨在为iOS开发者提供一份详实的学习指南。 #### 一、Core Animation概述 Core Animation是Apple为Mac OS X和iOS提供的一个强大的图形渲染引擎...