UIKit_UIView_Animation UIView动画

iOS Core Animation + Foundation + UIKit UIKit 阅读详情


UIView 中动画相关属性及方法


___________________________________________________________________________________

@interface UIView(UIViewAnimation)


//开始动画

+ (void)beginAnimations:(nullable NSString *)animationID context:(nullable void *)context;  // additional context info passed to will start/did stop selectors. begin/commit can be nested


//提交动画

+ (void)commitAnimations;                                                 // starts up any animations when the top level animation is commited


// no getters. if called outside animation block, these setters have no effect.

//设置动画的代理

+ (void)setAnimationDelegate:(nullable id)delegate;                          // default = nil


//设置动画将要开始使用的时候调用的方法

+ (void)setAnimationWillStartSelector:(nullable SEL)selector;                // default = NULL. -animationWillStart:(NSString *)animationID context:(void *)context


// 设置动画已经结束的时候调用的方法

+ (void)setAnimationDidStopSelector:(nullable SEL)selector;                  // default = NULL. -animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context


//设置动画持续时间

+ (void)setAnimationDuration:(NSTimeInterval)duration;              // default = 0.2


//设置动画的延迟时间(即等待多久后执行动画)

+ (void)setAnimationDelay:(NSTimeInterval)delay;                    // default = 0.0


//设置动画的开始时间

+ (void)setAnimationStartDate:(NSDate *)startDate;                  // default = now ([NSDate date])


//设置动画加速和减速的

+ (void)setAnimationCurve:(UIViewAnimationCurve)curve;              // default = UIViewAnimationCurveEaseInOut


//设置动画重复次数

+ (void)setAnimationRepeatCount:(float)repeatCount;                 // default = 0.0.  May be fractional


//YES:逆向(相反)动画效果,结束后返回动画逆向前的状态, 默认 NO

+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;    // default = NO. used if repeat count is non-zero


//设置动画是否从当前状态开始

+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState;  // default = NO. If YES, the current view position is always used for new animations -- allowing animations to "pile up" on each other. Otherwise, the last end state is used for the animation (the default).


//设置动画过度效果,transition动画的过度效果,view过度效果作用的视图,cache(YES:开始和结束视图分别渲染一次并在动画中创建帧,NO:视图将会渲染每一帧)

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache;  // current limitation - only one per begin/commit block


//设置是否可以进行动画

+ (void)setAnimationsEnabled:(BOOL)enabled;                         // ignore any attribute changes while set.

#if UIKIT_DEFINE_AS_PROPERTIES

@property(class, nonatomic, readonly) BOOL areAnimationsEnabled;

#else

+ (BOOL)areAnimationsEnabled;

#endif


//动画是否已结束

+ (void)performWithoutAnimation:(void (NS_NOESCAPE ^)(void))actionsWithoutAnimation NS_AVAILABLE_IOS(7_0);


#if UIKIT_DEFINE_AS_PROPERTIES

@property(class, nonatomic, readonly) NSTimeInterval inheritedAnimationDuration NS_AVAILABLE_IOS(9_0);

#else

+ (NSTimeInterval)inheritedAnimationDuration NS_AVAILABLE_IOS(9_0);

#endif


@end







___________________________________________________________________________________

@interface UIView(UIViewAnimationWithBlocks)


/**

 * 持续动画

 *

 * @param duration 动画持续时间

 * @param delay 动画延迟开始时间

 * @param options 动画属性 /时间函数曲线相关 /转场动画相关

 * @param animations 动画开始Block

 * @param completion 动画结束回调

 */

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);


/**

 * 持续动画

 *

 * @param duration 动画持续时间

 * @param animations 动画开始Block

 * @param completion 动画结束回调

 */

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0


/**

 * 持续动画

 *

 * @param duration 动画持续时间

 * @param animations 动画开始Block

 */

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0, completion = NULL

 

/**

 * 弹簧动画

 *

 * @param duration 动画持续时间

 * @param delay 动画延迟时间

 * @param dampingRatio 阻尼值(0.0~1.0),阻尼值越小,弹动的幅度越大,如果大道一定程度,会出现弹不动的情况。

 * @param velocity 速率,值越小,弹簧拉伸的幅度越小。这里需要注意的是,如果设置为0,表示忽略该属性,由动画持续时间和阻尼计算动画的效果。

 * @param options 动画属性 /时间函数曲线相关 /转场动画相关

 * @param completion 动画结束回调

 */

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);


/**

 * 转场动画

 *

 * @param view 动画操作对象

 * @param duration 动画持续时间

 * @param options 动画属性 /时间函数曲线相关 /转场动画相关

 * @param animations 动画开始Block

 * @param completion 动画结束回调

 */

+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);


/**

 * 转场动画

 *

 * @param fromView 当前视图

 * @param toView 转场后视图

 * @param duration 动画持续时间

 * @param options 动画属性 /时间函数曲线相关 /转场动画相关

 * @param completion 动画结束回调

 */

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // toView added to fromView.superview, fromView removed from its superview


/**

 * 系统动画

 *

 * @param duration 动画持续时间

 * @param delay 动画延迟时间

 * @param options 动画属性 /时间函数曲线相关 /转场动画相关

 * @param animations 动画开始Block

 * @param completion 动画结束回调

 */

+ (void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray<__kindof UIView *> *)views options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))parallelAnimations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);


@end






___________________________________________________________________________________

@interface UIView (UIViewKeyframeAnimations)


/**

 * 关键帧动画

 *

 * @param duration 动画持续时间

 * @param delay 动画延迟时间

 * @param options 动画属性 /时间函数曲线相关 /转场动画相关

 * @param animations 动画开始Block

 * @param completion 动画结束回调

 */

+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);


/**

 * 关键帧动画

 *

 * @param frameStartTime 相对开始时间

 * @param frameDuration 相对持续时间

 * @param animations 动画开始Block

 */

+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (^)(void))animations NS_AVAILABLE_IOS(7_0); // start time and duration are values between 0.0 and 1.0 specifying time and duration relative to the overall time of the keyframe animation


@end


————————

关键帧动画实例

- (void)runAnimateKeyframes:(UIView *)view {

    

    /**

     *  relativeDuration  动画在什么时候开始

     *  relativeStartTime 动画所持续的时间

     */

    

    [UIView animateKeyframesWithDuration:8.f

                                   delay:0.0

                                 options:UIViewKeyframeAnimationOptionCalculationModeLinear

                              animations:^{

                                  [UIView addKeyframeWithRelativeStartTime:0.0   // 相对于8秒所开始的时间(第0秒开始动画)

                                                          relativeDuration:1/4.0 // 相对于8秒动画的持续时间(动画持续2秒)

                                                                animations:^{

                                                                    view.backgroundColor = [UIColor purpleColor];

                                                                    view.size = CGSizeMake(40, 40);

                                                                }];

                                  

                                  [UIView addKeyframeWithRelativeStartTime:1/4.0 // 相对于8秒所开始的时间(第2秒开始动画)

                                                          relativeDuration:1/4.0 // 相对于8秒动画的持续时间(动画持续2秒)

                                                                animations:^{

                                                                    view.backgroundColor = [UIColor yellowColor];

                                                                    view.size = CGSizeMake(20, 20);

                                                                }];

                                  [UIView addKeyframeWithRelativeStartTime:2/4.0 // 相对于8秒所开始的时间(第4秒开始动画)

                                                          relativeDuration:1/4.0 // 相对于8秒动画的持续时间(动画持续2秒)

                                                                animations:^{

                                                                    view.backgroundColor = [UIColor greenColor];

                                                                    view.size = CGSizeMake(40, 40);

                                                                }];

                                  [UIView addKeyframeWithRelativeStartTime:3/4.0 // 相对于8秒所开始的时间(第4秒开始动画)

                                                          relativeDuration:1/4.0 // 相对于8秒动画的持续时间(动画持续2秒)

                                                                animations:^{

                                                                    view.backgroundColor = [UIColor redColor];

                                                                    view.size = CGSizeMake(20, 20);

                                                                }];

                                  

                              }

                              completion:^(BOOL finished) {

                                  [self runAnimateKeyframes:view];

                              }];

    

}






给你的按钮加入萌动画效果教程 Core Animation是Apple提供的一个强大的框架,旨在让开发者可以高效地构建流畅且富有表现力的动画效果,从而提高应用的用户体验。框架允许开发者通过编程的方式控制动画的每一个细节,包括动画的持续时间、速度曲线、重复次数以及是否与其他动画同时发生等等。在Swift中使用Core Animation可以实现从简单的属性动画到复杂的视图转换效果,它提供了多种类和协议,例如和等,每一个都有其特定的用途和特点。理解这些组件如何协同工作是掌握Core Animation框架的关键。 阅读详情

相关推荐

UIImageView动画实现指南与技巧

Core Animation是iOS和macOS操作系统中用于创建流畅动画的一个框架。它的架构包括了CALayer、CAAnimation、CAMediaTiming和CAAnimationDelegate等组件。CALayer是基础,负责内容的渲染,而CAAnimation则是 CALayer 提供动画效果的核心组件。CALayer:它类似于UIView,但专注于绘图,它不处理用户交互,主要负责动画的基础渲染。一个CALayer可以包含其他CALayer作为子层,形成层次结构。

weixin_35433448的博客 364

iOS动画-从UIView到Core Animation

首先,介绍一下UIView相关的动画。 UIView普通动画: [UIView beginAnimations: context:]; [UIView commitAnimations]; 动画属性设置: 1 //动画持续时间 2 [UIView setAnimationDuration:(NSTimeInterval)]; 3 /...

weixin_30577801的博客 140

模型检测--工具KeYmaera

论文:KeYmaera: A Hybrid Theorem Prover for Hybrid Systems 作者:Andre Platzer and JanKeYmaera摘要1 介绍2用于混合系统的KeYmaera验证工具3混合系统,混合自动机和混合程序 摘要 KeYmaera是一种用于混合系统的混合验证工具,它结合了演绎,实数代数和计算机代数证明者技术。它是自然的自动和交互式定理证明器 混合系统的规范和验证逻辑。 KeYmaera支持差分动态逻辑,它是用于混合程序的实值一阶动态逻辑,是混合自动机的程

ziigea的博客 1076

ios UIView封装动画

1 #import "NJViewController.h" 2 3 @interface NJViewController () 4 @property (weak, nonatomic) IBOutlet UIView *cutomView; 5 6 @end 7 8 @implementation NJViewController 9 ...

diren5694的博客 134

Snort源代码编译 _ 采坑之旅(for Windows VS2015)

    系统环境:Windows7 sp1 x64     编译环境:VS2015 SP1     Snort版本:2.9.12     daq版本:2.0.6     Snort官网:https://www.snort.org/downloads#snort-downloads 背景     最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《...

magictong的专栏 8887

Unity类银河恶魔城学习记录1-10 PlayerWallJump源代码 P37

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考

Homura_的博客 1378

UIView的各种动画效果

今天无聊 把UIVIew的动画效果做了下总结 附上源码 仅供参考 ViewControl: - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor cyanColor]; [self addView];

iOS野狼的专栏 538

【无标题】 Python自动化法律文书撰写

Jinja2是一个功能强大的模板引擎,支持丰富的语法和功能。除了条件判断和循环语句外,Jinja2还支持过滤器、宏、继承等高级特性,非常适合处理复杂的文书模板。

master_chenchen的博客 2061

动画

iOS能够实现动画的方式: UIView基础实现方式一UIView基础实现方式二CoreAnimation实现方式 动画的效果: 传达状态提高用户对直接操作的感知帮助用户可视化操作的结果 GIF和刷新菊花 #pragma mark ---GIF - (void)playGIF{         NSMutableArra

Nirvana_666的博客 511

CosyVoice 本地部署详细教程 手把手小白教程

本文提供了详细的CosyVoice本地部署教程,强调了避免中文名称和空格的重要性,并列出了必要的软件安装步骤,包括CUDA、cuDNN、Git和Miniconda。教程涵盖了从检查CUDA版本到下载模型和运行模型的全过程,确保用户能够顺利部署并使用CosyVoice。

huazn612的博客 2万+

手机拍视频就能训练机器人?SpatialLM开源模型实战指南(附HuggingFace部署教程)

本文详细介绍了如何利用开源模型SpatialLM通过手机视频训练机器人理解3D空间结构。从HuggingFace部署、视频预处理到模型推理和结果可视化,提供完整的实战指南,特别适合具身智能领域的开发者快速上手。

2y3u4i5o6p的博客 787

iOS笔记 页面切换 CATransition Animation动画

CATransition *animaton = [CATransition animation]; // 声明     animaton.duration = 0.7; // 动画时长     animaton.type = @"rippleEffect"; // 动画类型      animaton.subtype = kCATransitionFromLeft

qq_30143179的博客 299

HotSpot G1 GC 的分区记账、SATB 并发标记与停顿目标调优解析

线上GC毛刺该调停顿目标、加大新生代还是换收集器?本文从HotSpot G1的设计出发,梳理分区与巨型对象、卡表与记忆集、写屏障与细化线程、停顿预测、SATB并发标记、自适应IHOP、混合回收规则及Full GC兜底,并注明JDK8至JDK27的版本差异。文中在JDK8与JDK17上实测:停顿目标从200ms降到20ms,伊甸区缩小四成、P99下降但仍超目标;巨型对象会反复触发又撤销并发标记;JDK17并行Full GC平均停顿约为JDK8的三成。最后给出日志解读、参数清单、调优流程与选型。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

Core Animation编程 Part1/2

那啥,一忙起来就彻底忘记更新Blog了,目前移动产品开发也有了新的趋势,继续守在一个平台越来越难混了,HTML5在国内App开发中也逐步流行,因此未来移动开发工程师不仅仅要懂iOS/Android,多少还需要了解些H5,也就是Hybrid的开发模式,具体改日再叙。 今天继续扯iOS开发系列,聊聊iOS中牛逼闪闪的Core Animation,会有两个部分。先来了解下iOS中动画的层次: 最

Man_OC的专栏 759

太美了!现代女主jk海军风穿搭四视图

哪个女孩子初高中的时候不买几套JK衣服啊,穿上完全是青春女孩。那还愣着干啥,不得也给你的漫剧女主也穿上!直接就是分享三套JK穿搭,红棕双麻花辫配经典水手服,是那种乖乖巧巧的元气学妹;粉色羊毛卷双马尾,搭配蝴蝶结和小挎包甜度直接拉满;还有灰棕色侧麻花辫,浅蓝上衣配黑色百褶裙,温柔里又带点小酷。下面把这三套角色的完整提示词分享出来,喜欢哪套就拿去参考,改改发型和配色,还能继续解锁新角色!

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 50

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

iOS第十七篇 动画可以通过 UIKit 和 Core Animation 框架来实现

上述代码中,通过UIView.animate方法设置动画的持续时间和要改变的属性(这里是视图的transform属性来实现缩放),实现了视图的放大和缩小动画,并通过递归使其循环进行。基础动画(CABasicAnimation):基础动画通过属性修改进行动画参数控制,只有初始状态和结束状态。UIView 提供了简单便捷的动画方法,适合实现一些基础的动画效果。代码中创建了两个基础动画,一个用于改变位置,一个用于改变透明度,然后将它们添加到动画组中一起执行。Core Animation 动画。

I_did_it的博客 871

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

iOS开发核心动画之图层Layer

一. layer在每个UIView内部都有一个layer这样一个属性.UIView之所以能够显示,就是因为它里面有这个一个层,才具有显示的功能. 二. 操作layer改变UIView的外观1. 设置阴影_RedView.layer.shadowOpacity = 1;2. 设置阴影的圆角_RedView.layer.shadowRadius =10;3. 设...

151

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

第八章 Core Animation1 8.1 Core Animation入门 Core Animation(或者叫Quartz Core)是一个Objective-C类库,内建于IOS媒体层中

8.1 Core Animation入门 Core Animation(或者叫Quartz Core)是一个Objective-C类库,内建于IOS媒体层中,是所有动画的后台支柱。 与Core Animation并不局限于二维平面,而是可以用于三维变换。 Core Animation的许多层面已经内置与UIKit的基本操作中了,如UIViewController的切换动画,UIView的

Le_Wrynn的博客 534

Core Animation(一)iOS图形和动画的初步认识

一、行业及平台情况分析 在中国,一些发达城市,例如北、上、广、深,都处于经济高速发展阶段,而人们的生活也越发的忙碌,时间高度碎片化,所以人们没有很多时间坐在PC前,而都改用移动设备,甚至现在一些大公司的部分办公都依靠移动设备,所以移动开发是将来一段时间的必然趋势。 移动平台主要有iOS、Android以及其他,iOS一般定位于高端用户,Android面向高中低端用户,但高端用户较iOS偏少,甚

阿福的专栏 2238

iOS简单好看的动画

先是用xib拖的一个界面,用代码让各个视图动起来就制作成一个简单好看的动画效果了。 最终的动画效果: .h文件 #import @interface FirstAnimationViewController : UIViewController @property (strong, nonatomic) I

COOL_BEAR_XX的专栏 975

更改navigationController push和pop界面切换动画

作者:longlongago 博客:http://blog.youkuaiyun.com/longlongago2000 转帖请保留 有时候我们需要自定义navigationController push和pop界面切换动画,用到的代码如下: For Push: MainView *nextView=[[MainView alloc] init]; [UIView beginAnimation

longlongago的博客 2万+

iOS视图控制器转场动画详解

http://blog.devtang.com/2016/03/13/iOS-transition-guide/

shucunjiaoyegongyuan的博客 364

IOS 动画

//uiview动画 //开始动画 [UIView beginAnimations:nil context:nil]; //运动的时间 [UIView setAnimationDuration:2.f]; //延时启动 [UIView setAnimationDelay:2]; //速度曲线(可以改变速度) [UIView

专栏 668

iOS动画

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138377的博客 85

UIView的剖析(转)

转自:http://blog.youkuaiyun.com/mengtnt/article/details/6716289 前面说过UIViewController,但是UIView也是在MVC中非常重要的一层。正是因为UIView是Iphone下所有界面的基 础,所以官方专门写了一个文档“ViewProgrammingGuideforiOS”。通过这个可以很好的了解UIView的功能。 ...

weixin_30872337的博客 66

-- iphone--UIViewController与UIView的关系 --

原帖全楼层内容~~~ haoxue 2010-11-21 21:30 iphone--UIViewController与UIView的关系 UIView翻转效果实现 新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果; - (void)viewDidLoad {      [sup

939
上一篇: UIkit 框架
下一篇: swift3.0 基础知识点
平子~~
博客等级 码龄12年 7粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值