iOS 力学动画生成器UIKit Dynamics 之碰撞效果讲解
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
iOS 力学动画生成器UIKit Dynamics 之碰撞效果讲解的更多相关文章
- iOS 力学动画生成器UIKit Dynamics 之碰撞效果解说
UIKit Dynamic是iOS7 新增的一组类和方法.可赋予UIView逼真的行为和特征,不须要写动画效果那些繁琐的代码,让开发者可以轻松地改善应用的用户体验.一共同拥有6个可用于定制UIDyna ...
- <iOS 组件与框架> -- UIKit Dynamics
UIKit Dynamics 结合 『iOS 组件与框架 』一书.总结的知识点与demo demo 地址: GitHub地址 一.概述 1.UIKit Dynamics 是 iOS 7 新增的内容.其 ...
- iOS UIKit Dynamics入门 UIKit动力学,实现重力、连接、碰撞、悬挂等动画效果
本文为转载文章 版权归原文所有 什么是UIKit动力学(UIKit Dynamics) 其实就是UIKit的一套动画和交互体系.我们现在进行UI动画基本都是使用CoreAnimation或者UIVie ...
- WWDC 2013 Session笔记 - UIKit Dynamics入门
本文涉及到的WWDC2013 Session有 1.Session 206 Getting Started with UIKit Dynamics 2.Session 221 Advanced Tec ...
- IOS7开发~UIKit Dynamics
UIKit Dynamics的中文名称:有叫UIKit动力,也有叫UIKit动力模型和UIKit动态或者动态UI,叫什么名不要紧,理解就含义就可以了. 什么是UIKit Dynamics ? UIKi ...
- 随手记UIKit Dynamics
以今年的优势WWDC品行,我记得一些明年的元素.一些博客上找到了新的功能没有被记录.认为iOS 8全力以赴.iOS 7该属性不随手记录为时已晚 :) 参考WWDC 2013的Session Video ...
- IOS之动画
IOS之动画 15.1 动画介绍 15.2 Core Animation基础 15.3 隐式动画 15.4 显式动画 15.5 关键帧显式动画 15.6 UIView级别动画 15.1 动画介绍 ...
- IOS 动画专题 --iOS核心动画
iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...
- ios 学习动画的套路 (一)
你也肯定喜欢炫酷的动画! 在APP中,动画就是一个点睛之笔!可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟~不知道从哪里下手去写!会连续的 ...
随机推荐
- 手机连接fiddler后,浏览器无法打开网页或者fiddler抓取不到手机应用相关数据的情况
关于手机如何连接fiddler,网上有很多教程,我暂时就不写了 今天在使用fiddler的过程中,发现fiddler突然无法抓取移动端应用的数据包,再三确认连接无误.因此就开始了解决之旅 起因是安卓手 ...
- 测试merge效率
测试说明: MERGE是oracle提供的一种特殊的sql语法,非常适用于数据同步场景,即: (把A表数据插到B表,如果B表存在相同主键的记录则使用A表数据对B表进行更新) 数据同步的常规做法是先尝试 ...
- Mysql索引优化2
理想的索引 查询频繁 区分度高 长度小 尽量能覆盖常用查询字段 索引与排序 对于覆盖索引,直接在索引上查询时,就是有顺序的,using index 在innodb引擎中,沿着索引字段排序自然是有序的 ...
- nextSibling 和nextElementSibling
在使用DOM过程中发现一个问题: 使用nextSibling 属性返回指定节点之后紧跟的节点,在相同的树层级中.被返回的节点以 Node 对象返回. this.arrow = this.screen. ...
- XML之DTD
前言 上篇我们知道了,XML的应用范围还是很广的,那么无规矩不成方圆,如果我们每个人写XML的风格不一致,那么读起来是不是很费劲呢?所以格式良好的XML就渐渐的被我们所需要. 内容 格式良好指:拥有正 ...
- [USACO09OCT]热浪Heat Wave Dijkstra
题目描述 The good folks in Texas are having a heatwave this summer. Their Texas Longhorn cows make for g ...
- Codeforces Round #501 (Div. 3) 1015A Points in Segments (前缀和)
A. Points in Segments time limit per test 1 second memory limit per test 256 megabytes input standar ...
- 1100 Mars Numbers(20 分)
People on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars. T ...
- 关于强大的requests
存到文件: with open(filename, 'wb') as fd: for chunk in r.iter_content(chunk_size): fd.write(chunk) 使用 R ...
- DateAdapterForDay
public class DateAdapterForDay extends XmlAdapter<String, Date> { private SimpleDateFormat dat ...