UIView层动画在view转换上的应用

ios animation 动画学习总结 动画一直是 iOS 开发中很重要的一部分。设计良好,效果炫酷的动画往往能对用户体验的提升起到很大的作用,在这里将自己学习 iOS 动画的体会记录下来,希望能对别人有所帮助。 iOS 的动画框架,即 CoreAnimation,本身十分庞大和复杂,这里暂时分两个部分进行介绍,分别是 UIView 动画 和 CALayer 动画。 1、UIView Animation 简单动画 对于 UIView 上简单的动画,iOS 提供了很方便的函数: + animateWithDuration:animations 阅读详情

每一个iOS应用都一个UIWindow的实例,这个不过是一个UIView的子类,因此我们可以在UIWindow上的做动画,而这样的动画可以用来做View的转换。

下面的工程用Xcode4.2建立

1.新建一个Empty Application,设置如下:


2.增加一个ViewController类,配置如下:


打开FVC.xib,加入一个button,命名为 goto two,为它的touch up inside事件加入一个响应函数。

3.使用上面同样的方法,加入一个SVC类,也加入一个button,命名为back,也为它的touch up inside事件加入一个响应函数。

4.修改AppDelegate.h文件如下:

@classFVC;

@classSVC;

@interface AppDelegate :UIResponder <UIApplicationDelegate> {

    FVC *_fvc;

    SVC *_svc;

}


@property (strong,nonatomic) UIWindow *window;

- (void)flipAction:(id)sender;

@end


5.在AppDelegate.m中实现函数flipAction:

#pragma mark -

#pragma mark === Flip action ===

#pragma mark -

- (void)flipAction:(id)sender {

[UIViewbeginAnimations:nilcontext:NULL];

[UIViewsetAnimationDuration:0.5];

[UIViewsetAnimationTransition:([_fvc.viewsuperview] ? UIViewAnimationTransitionFlipFromLeft :UIViewAnimationTransitionFlipFromRight) forView:self.windowcache:YES];

     

     if ([_fvc.viewsuperview]) {

         [_fvc.viewremoveFromSuperview];

         [self.windowaddSubview:_svc.view];

     } else {

         [_svc.viewremoveFromSuperview];        

         [self.windowaddSubview:_fvc.view];

     }

[UIViewcommitAnimations];

}


6.在AppDelegate.m中修改函数

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

   _svc = [[SVCalloc] initWithNibName:@"SVC"bundle:nil];

   _fvc = [[FVCalloc] initWithNibName:@"FVC"bundle:nil];

    

   self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]]autorelease];

   // Override point for customization after application launch.

   self.window.backgroundColor = [UIColorwhiteColor];

    [self.windowaddSubview:_fvc.view];

    [self.windowmakeKeyAndVisible];

   return YES;

}


7.在AppDelegate.m中修改函数dealloc

- (void)dealloc

{

    [_svcrelease];

    [_fvcrelease];

    [_windowrelease];

    [superdealloc];

}


千万不要忘了忘记内存管理。

8.在FVC.m中实现button的响应事件代码:

#import"AppDelegate.h"


- (IBAction)gotoTwo:(id)sender {

    AppDelegate *appD = (AppDelegate *)[UIApplicationsharedApplication].delegate;

    [appD flipAction:nil];

}

9.在SVC.m中做同样的事情。


工程代码如下:


http://download.youkuaiyun.com/detail/NickTang/3692498



iOS动画进阶教程:从视图到层的动画转换 本文深入探讨了iOS中使用Auto Layout进行视图动画的高级技巧,并介绍了如何通过Core Animation对层进行动画处理。通过对比视图和层的动画处理方式,文章引导读者理解在需要性能提升或更高灵活性时,如何选择合适的动画实现方式。 阅读详情

相关推荐

【Java】JAVA知识总结浅析

Java是一门功能强大的编程语言,广泛应用于多个领域。Java的编程思想,包括面向过程和面向对象编程,Java的发展历史,各版本的特点,JVM原理,数据类型,Java SE与Java EE的区别,应用场景,JDK与JDBC,Java Web技术,Spring Boot系列,以及MyBatis框架的基本实现,最后还将讨论Java在大数据、人工智能、嵌入式和Android等领域的应用。

wnm23的专栏 5239

ios代码添加UIViewController对应的view作为子控件

项目代码分析 这是一个代码实现view的例子:主view上有4个控件:3个按钮和一个UIView类型的contentView,其中点击某一个按钮的时候,就会在contentView上添加子控件进行显示 #import @interface MainViewController : UIViewController { IBOutlet UIView *contentView;

thanklife的专栏 3668

别再瞎调了!手把手教你搞定STM32步进电机PID速度环(附完整代码与比例系数详解)

本文详细解析了STM32步进电机PID速度环的完整实现过程,从算法输出到脉冲频率的转换链路,重点讲解了比例系数的确定方法及系统标定实验。通过完整的代码示例和调试技巧,帮助工程师解决实际应用中的常见问题,提升步进电机控制精度与稳定性。

weixin_28729331的博客 214

关于setneedsdisplay

1、在Mac OS中NSWindow的父类是NSResponder,而在i OS 中UIWindow 的父类是UIVIew。程序一般只有一个窗口但是会又很多视图。 2、UIView的作用:描画和动画,视图负责对其所属的矩形区域描画、布局和子视图管理、事件处理、可以接收触摸事件、事件信息的载体、等等。   3、UIViewController 负责创建其管理的视图及在低内存的时候将他们从内存中

IOS -Step by step 4541

【Autosar】学习总结-MCAL

一、简介 MCAL:微控制器抽象层;位于BSW层中的最下层; MCAL细分,可将驱动分为:微控制器驱动、存储器驱动、通信驱动、IO驱动: 二、MCAL的配置(EB-Tresos) 1.PORT 我理解的PORT:MCAL层中的IO驱动组中的pin脚总体配置: Port就是芯片上的每个pin脚,可以配置成DIO ADC PWM ICU等单引脚的功能,也能配置成CAN的TX或者RX、SPI的MOSI等等其他功能的单个pin脚功能; 总之,PORT就是芯片上的具体的某个引脚。 配置

zDavid_2018的博客 3万+

Windows10下部署Heygem进行数字人生成

对于使用Heygem生成数字人,需要注意几个问题: + 需要使用Nvidia的显卡。 + 需要在Windows上进行本地部署。主要原因为客户端是Windows的,客户端对上传的视频写入硬编码的`D:\heygem_data\voice\data`目录,需要在容器上读取这些文件。 + 需要在Windows上部署Docker,将Windows的目录映射到容器中,由容器中的服务进行读取。 + 需要特别注意,一定要有D盘,这个D盘是Windows的D盘,不能是插入的USB设备后产生的D盘。 + 需要下载3个Doc

冀辉的博客 5620

iOS 动画专题(UIView二维形变动画与CAAnimation核心动画)

1. iOS动画 总的来说,从涉及类的形式来看,iOS动画有:基于UIView的仿射形变动画,基于CAAnimation及其子类的动画,基于CG的动画。这篇文章着重总结前两种动画。 2. UIView动画 设置UIView形变动画有两种常见用到的属性,.frame,.transform,所以有的人也可以分别称之为: ① frame动画 ② transform动画 这两种动画只需要在...

H.A.N的博客 1690

数字IC设计实现之hierarchical flow系列(一)

数字IC设计实现之hierarchical flow系列(一) 最近这段时间小编又比较忙起来了,今天抽空来咖啡厅码字来了,刚到时脑子一片空白,不知道要分享些什么(项目结束后将会在知识星球上分享数字 IC 设计实现 Tapeout 前要review的那些 checklist)。突然间想起来有个星友希望小编分享些数字 IC 设计实现 hierarchical flow 的相关内容。考虑到现在大都采用这种方式来做 design 和实现,那就选这个 topic 了。限于篇幅和时间限制,今天只分享逻辑综合部分和布局布

weixin_37584728的博客 6000

让View的转换 动起来!

<!-- google_ad_client = "pub-8097737732457645";/* 728x90, 创建于 09-6-23 */google_ad_slot = "0915066646";google_ad_width = 728;google_ad_height = 90;// --><!--

huanglx的专栏 7638

ResNet改进(7):添加 SK注意力机制

实现 SK 注意力机制。

2401_82355416的博客 732

麻雀搜索算法(SSA)详解:从鸟群智能到优化实践

麻雀搜索算法(SSA)是一种新型群智能优化算法,模拟麻雀群体的觅食行为和反捕食机制。该算法将优化问题转化为麻雀群体对食物源的搜索过程,通过发现者、加入者和警戒者的角色分工实现高效优化。SSA具有原理新颖、参数合理、收敛快速等特点,在函数优化、工程设计和机器学习等领域展现出良好应用前景。算法通过数学模型模拟麻雀的觅食策略,包括发现者全局探索、加入者局部开发和警戒者危险预警机制,有效平衡了全局搜索与局部开发能力。SSA相比传统优化算法具有更好的收敛性和优化效果。

qq_42212808的博客 1072

iOS动画性能优化:UIView-EasingFunctions的最佳实践

UIView-EasingFunctions是一个为iOS开发者提供自定义缓动函数的强大工具,它通过分类扩展UIView,让开发者能够轻松实现流畅自然的动画效果。本文将详细介绍如何利用这个库提升你的iOS应用动画性能,让用户体验更加出色。 ## 为什么选择UIView-EasingFunctions? 在iOS开发中,动画是提升用户体验的关键因素之一。原生的UIView动画虽然简单易用,但在缓

gitblog_00859的博客 1071

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ios UIView的mask属性,view和layer的关系

mask属性 :https://www.jianshu.com/p/fe4124de3729 view和layer的关系 :https://www.jianshu.com/p/9c7a23ea705b 什么是mask: CALayer有一个属性叫做mask,通常被称为蒙版图层,mask类似于子视图,但却不是一个普通的子视图,它本身也是CALayer类型,具有和其他图层一样的绘制和布局属性...

gcs的博客 3985

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IOS开发-UIView之动画效果的实现方法

一、使用UIView类实现动画 基本写法,代码必须放在Begin和Commit之间: [UIView beginAnimations:nil context:nil]; // 开始动画 // Code... [UIView commitAnimations]; // 提交动画 简单例子: [UIView beginAnimations:nil context:nil]; // 开始动画 ...

YF0710的博客 230

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UIView 简介(一)ios 显示图层的层次框架

UIView的重要性 大部分你想要可视化操作都是由视图对象-即UIView类的实例-来进行的。 ios 显示图层的层次框架 上层:    UIView视图和它的层对象,每个UIKit框架里的视图都被一个层对象支持(通常是一个CALayer类的实例)(UIView视图可以是容器)中间层:在它们的层对象之后是Core Animation的解释对象,底层:    最

学习笔记 2148

UIView 你知道多少

该文章转载自:http://www.cocoachina.com/newbie/basic/2012/0425/4192.html      曾经有人这么说过,在iphone里你看到的,摸到的,都是UIView,所以UIView在iphone开发里具有非常重要的作用。那么UIView我们到底知道多少呢。请看看下面的问题, 如果这些你都知道,那么本文章的内容就请绕道,如果你还不太清楚,我

程序人生 2249

UIview转换UIimage

1、将UIview转换UIimage;2、拼接两张图片为一张;- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIImageView *test3= [[UIImageView a

u012477117的专栏 695

DCAnimationKit源码解析:理解UIView分类动画实现原理

DCAnimationKit是一个为iOS开发提供丰富动画效果的UIView分类库,通过简单的API调用即可为视图添加各种生动的动画效果。本文将深入解析其源码结构和实现原理,帮助开发者理解iOS动画的底层实现逻辑。 ## 项目结构概览 DCAnimationKit采用典型的Objective-C分类(Category)设计模式,核心代码集中在两个文件中: - **UIView+DCAnima

gitblog_00971的博客 397

iOS UIView动画的使用方法

一、使用UIView类实现动画 基本写法,代码必须放在Begin和Commit之间:  [UIView beginAnimations:nil context:nil]; // 开始动画 // Code... [UIView commitAnimations]; // 提交动画   简单例子: [UIView beginAnimations:nil conte

dylan_lwb_ 1251

UIView-EasingFunctions完全解析:从安装到高级动画的完整教程

UIView-EasingFunctions是一个强大的iOS开发工具,它为UIView提供了自定义缓动函数的分类扩展,让开发者能够轻松实现流畅自然的block-based动画效果。无论是简单的视图移动还是复杂的交互过渡,这个库都能帮助你创建出令人印象深刻的用户体验。 ## 什么是UIView-EasingFunctions? UIView-EasingFunctions是一个基于UIView

gitblog_00167的博客 407

有关CALayer与UIView的关系

CALayer属于Core Animation部分的内容,比较重要而不太好理解。以下是园子中看到的一篇文章的摘录: 1. UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。UIView本身更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,b

code life 1039

UIView中的坐标转换

// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值 - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view; // 将像素point从view中转换到当前视图中,返回在当前视图中的像素值 - (CGPoint)convertPoint:(CGPoint)point fr

yangye的专栏 443
上一篇: Objective-C 2.0数据类型
下一篇: 图解苹果iOS 5的24个秘密功能(图)
NickTang
博客等级 码龄24年 261粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值