UIKit Dynamic是iOS7 新增的一组类和方法,可赋予UIView逼真的行为和特征,不需要写动画效果那些繁琐的代码,让开发人员能够轻松地改善应用的用户体验。一共有6个可用于定制UIDynamicAnimator的类,这里先只简单介绍下碰撞的动画效果,即UICollisionBehavior。需要签订一个代理协议:UICollisionBehaviorDelegate。其他效果,后续更新,敬请期待。

注意:dragonImageView和frogImageView记得要初始化还有: UIDynamicAnimator、UIGravityBehavior、 UICollisionBehavior一定要声明成属性或者全局变量,否则不会产生动画效果!

#import "ICFCollisionViewController.h"

@interface ICFCollisionViewController ()

{

UIImageView *dragonImageView;

UIImageView*frogImageView;

}

@end

@implementation ICFCollisionViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil];

if (self) {

}

return self;

}

- (void)viewDidLoad

{

[superviewDidLoad];

// 初始化力学动画生成器

UIDynamicAnimator *animator = [[UIDynamicAnimatoralloc]initWithReferenceView:self.view];

// 创建重力下落效果的对象

UIGravityBehavior *gravityBehavior = [[UIGravityBehavioralloc]initWithItems:@[frogImageView,dragonImageView]];

//设置重力加速度,水平和竖直方向

[gravityBehavior setGravityDirection:CGVectorMake(0.0f, 0.3f)];

// 创建碰撞效果的对象

UICollisionBehavior* collisionBehavior = [[UICollisionBehavioralloc]initWithItems:@[frogImageView,dragonImageView]];

// 物体的碰撞模式共有三种:UICollisionBehaviorModeItems(物体相互碰撞)

UICollisionBehaviorModeBoundaries(物体不相互碰撞,只与边界碰撞)

UICollisionBehaviorModeEverything(既与物体碰撞又与边界碰撞)

[collisionBehavior setCollisionMode:UICollisionBehaviorModeEverything];

//此代码的作用是将self.view的边框作为碰撞边界,必须设置为YES,否则不会生成碰撞效果

collisionBehavior.translatesReferenceBoundsIntoBoundary =YES;

[animatoraddBehavior:gravityBehavior];

[animatoraddBehavior:collisionBehavior];

collisionBehavior.collisionDelegate =self;

}

-(void)collisionBehavior:(UICollisionBehavior *)behavior beganContactForItem:(id<UIDynamicItem>)item withBoundaryIdentifier:(id<NSCopying>)identifier atPoint:(CGPoint)p

{

NSLog(@"开始碰撞时触发的方法");

}

-(void)collisionBehavior:(UICollisionBehavior *)behavior endedContactForItem:(id<UIDynamicItem>)item withBoundaryIdentifier:(id<NSCopying>)identifier

{

NSLog(@"结束碰撞时触发的方法");

}

@end

最新文章

  1. 详解https是如何确保安全的?
  2. 看完《Thinking in Java》后,我觉得自己就是一个不懂编程的小孩子,如何快速摆脱这种自卑感
  3. iOS多线程学习及总结
  4. 2015 Selenium大会
  5. paip.信用卡账单处理系统功能vO22
  6. scala之method和function的区别
  7. Nginx作为简单代理服务器(Windows环境)
  8. C语言中进制知识总结
  9. 转 : React Native 开发之 IDE 选型和配置
  10. linux入门教程(七) linux系统用户以及用户组管理
  11. 我用的比较少的CSS选择器
  12. ASP.NET Web API下的HttpController激活:程序集的解析
  13. ORACLE JOB创建
  14. MYSQL数据库中中文乱码问题
  15. .net core Kestrel宿主服务器自定义监听端口配置
  16. jupyter notebook远程服务器终端连接
  17. C# 函数式编程及Monads.net库
  18. 如何将xml转为python中的字典
  19. mybatis+oracle如何批量执行多条update
  20. Webpack笔记(二)——搭建React开发环境

热门文章

  1. 8、泛型程序设计与c++标准模板库1、泛型程序设计的概念和术语
  2. 【转】如何在eclipse下配置Heritrix
  3. C#在Linux上的开发指南(续)
  4. vue入门(二)----模板与计算属性
  5. Git fatal:$&#39;GIT_DIR&#39; too big
  6. java排序算法(持续更新)
  7. 【转】Asp.Net页面生命周期
  8. c/c++/c# 快速计算 Cumulative Normal Distribution 正态累积函数CDF
  9. kuangbin专题16A(kmp模板)
  10. cf835(预处理 + 记忆化dp)