iPhone 简单动画过度

本文详细介绍了在iOS中使用UIView和Quartz Core进行动画过渡的方法。包括动画曲线、持续时间的设置,以及不同类型的动画过渡效果,如翻转、卷曲等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在iPhone中动画过度非常简单.

 

首先获取当前的图形上下文:

CGContextRef context = UIGraphicsGetCurrentContext();

 

接着设置一些动画属性用于开始动画:

 

[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
 

然后设置想要过度的对象的最终状态.

 

[big setFrame:SMALLRECT];
[big setAlpha:0.5];
[little setFrame:BIGRECT];
[little setAlpha:1.0];

 

最后提交动画,这样一个动画就会自动生成了

 

[UIView commitAnimations];

 

其中,setAnimationCurve是设置动画的方式,他有下面集中方式:

 

  • UIViewAnimationCurveEaseInOut  //开始和结束时动画效果比较慢
  • UIViewAnimationCurveEaseIn       //开始动画效果比较慢
  • UIViewAnimationCurveEaseOut     //结束动画效果比较慢
  • UIViewAnimationCurveLinear         //平滑的动画效果
而,setAnimationDuration则是设置动画的持续时间.

下面是两个UIView之间的动画过度
        // Start Animation Block
	//CGContextRef context = UIGraphicsGetCurrentContext();
	CGContextRef context = nil;
	[UIView beginAnimations:nil context:context];
	[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
	[UIView setAnimationDuration:1.0];
	
	// Animations
	[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
	
	// Commit Animation Block
	[UIView commitAnimations];
 
页面之间的过度主要依靠UIView setAnimationTransition: forView: cache: 这个方法以及 exchangeSubviewAtIndex:withSubviewAtIndex:
前者通过UIView静态方法设置过度的动画种类,后者实现真正的过度函数掉用.种类有如下五种:

 

typedef enum {
    UIViewAnimationTransitionNone,
    UIViewAnimationTransitionFlipFromLeft,
    UIViewAnimationTransitionFlipFromRight,
    UIViewAnimationTransitionCurlUp,
    UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;
 

 

除了这种简单的动画方式外,其实还有一种利用QuartzCore来做过度动画.不同的地方在于,这个过度动画作用于层,换句话说,他动画直接做用于整个UIView,而不像UIView的动画,可以作用于UIView局部或本身.当UIView作用与本身时,实际上也就相当于是对层的动画了.

 

	CATransition *animation = [CATransition animation];
	[animation setDelegate:self];
	[animation setDuration:1.0f];
	[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
	[animation setType: kCATransitionMoveIn];
	[animation setSubtype: kCATransitionFromBottom];
	
	
	[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
	[[[self superview] layer] addAnimation:animation forKey:@"transitionViewAnimation"];	
 

setDuration:和UIView中的动画效果一样,持续时间.

setTimingFunction:是动画的种类,和UIView一样,比如匀速动画,快速开始结束等.

setType:是指定动画的类型,他有:

 

  1. kCATransitionFade (淡入淡出来补给动画)
  2. kCATransitionMoveIn(从一个方向覆盖的方式来补给动画)
  3. kCATransitionPush(推送的方式来补给动画)
  4. kCATransitionReveal(一个试图展现出另外另外一个试图的方式)
当除了第一种方式外(淡入淡出),可以通过setSubType:来制定动画的方向(因为这些动画都是直接着用于层的,所以相当于只有试图间的切换过渡).动画方向有4个:
  1. kCATransitionFromRight
  2. kCATransitionFromLeft
  3. kCATransitionFromTop
  4. kCATransitionFromBottom

除此之外,还存在一些未公开的动画方式,这些方式有些不能在模拟器中看到效果,但是真机可行.
// Curl the image up or down. This runs only on the iPhone and will not
	// produce any effect from the simulator
	CATransition *animation = [CATransition animation];
	[animation setDelegate:self];
	[animation setDuration:1.0f];
	[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
    [animation setType:(notCurled ? @"pageCurl" : @"pageUncurl")];
	
	/*
		mapCurl, mapUncurl
		pageCurl, pageUncurl
		suckEffect, spewEffect,
		cameraIris, cameraIrisHollowOpen, cameraIrisHollowClose
		genieEffect, unGenieEffect,
		rippleEffect,
		twist,
		tubey,
		swirl,
		charminUltra
		zoomIn, zoomOut
		oglFlip
	 */
	
	//让他不给删除掉
	[animation setRemovedOnCompletion:NO];
    [animation setFillMode: @"extended"];
    [animation setRemovedOnCompletion: NO];
	
    notCurled = !notCurled;
	
	[[[self.view viewWithTag:TOP_LAYER_VIEW] layer] addAnimation:animation forKey:@"pageFlipAnimation"];
 

 

USB-IF高速;,经认证符合通用串行总线规范修订版 2.0 接口在 8 位模式下与 ULPI 规范修订版 1.1 兼容 工业标准 UTMI+ 低引脚接口 (ULPI) 可将 54 UTMI+ 信号转换为标准的 12 引脚链路控制器接口 54.7mA 未配置电流(典型情况)— 适用于总线供电的应用 83uA 挂起电流(典型情况)— 适用于电池供电的应用 闭锁性能超过 150 mA(每 EIA/JESD 78),Class II ESD 防护水平达 ±8kV HBM(在不使用外部保护设备的情况下) 集成了各种保护措施,在每个第三方的测试设备中均可耐受 IEC61000-4-2 ESD 测试(±8kV 接触电压和 ±15kV 空气电压) 支持用于附带 LS 设备的 FS 集线器的 FS 前导码 (UTMI+ Level 3) 支持 HS SOF 和 LS keep-alive 脉冲 包括对可选的 On-The-Go (OTG) 协议的全面支持,在 On-The-Go 附录修订版 1.0a 规范中有详细说明 支持 OTG 主机协商协议 (HNP) 和会话请求协议 (SRP) 允许主机关闭 VBUS,以便在 OTG 应用中节省电池电量 通过内部比较器支持 VBUS 电平的 OTG 监视。包括对外部 VBUS 或故障监视器的支持。 低潜伏高速接收器(最高为 43 高速时钟)允许使用带 ULPI 包装器的潜伏 UTMI 链路 用于接口保护的 STP 上的集成下拉电阻,允许在使用低速链路(针对低功率情况对软件进行了配置)的情况下,可靠地启动 Link/PHY 内置的 1.8V 调节器允许在使用单个 3.3V 电源的情况下工作 对 ID、DP 和 DM 线路到 VBUS 或接地进行内部短路保护 集成的 24MHz 晶振支持水晶操作或 24MHz 外部时钟输入 用于 480MHz 高速 USB 操作的内部 PLL 工业运行温度:-40°C 到 +85°C 符合 RoHS 的 32 引脚无铅 QFN 封装(5 x 5 毫米, 高度为 0.90 毫米)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值