<图形图像,动画,多媒体> 读书笔记 --- 力学行为特性
UIKit力学行为包括了:重力(UIGravityBehavior),碰撞(UICollisionBehavior),吸附(UIAttachmentBehavior),推(UIPushBehavior),甩(UISnapBehavior)和行为限制(UIDynamicItemBehavior).
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
_animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
//重力行为
_gravity = [[UIGravityBehavior alloc] initWithItems:@[_box]];
[_animator addBehavior:_gravity];
//碰撞行为
_collision = [[UICollisionBehavior alloc]
initWithItems:@[_box]];
[_collision addBoundaryWithIdentifier:@"barrier" fromPoint:_barrier.frame.origin
toPoint:CGPointMake(_barrier.frame.origin.x + _barrier.frame.size.width, _barrier.frame.origin.y)];
_collision.translatesReferenceBoundsIntoBoundary = YES;
_collision.collisionDelegate = self;
[_animator addBehavior:_collision];
UIDynamicItemBehavior* itemBehaviour = [[UIDynamicItemBehavior alloc] initWithItems:@[_box]];
itemBehaviour.elasticity = 0.5;
[_animator addBehavior:itemBehaviour];
}
- (void)collisionBehavior:(UICollisionBehavior *)behavior beganContactForItem:(id<UIDynamicItem>)item withBoundaryIdentifier:(id<NSCopying>)identifier atPoint:(CGPoint)p {
if (!_firstContact)
{
_firstContact = YES;
//设置吸附行为
self.attach = [[UIAttachmentBehavior alloc] initWithItem:_attachmentPoint attachedToItem:_box];
[self.animator addBehavior:self.attach];
//设置推行为
UIPushBehavior* push = [[UIPushBehavior alloc] initWithItems:@[_box] mode:UIPushBehaviorModeInstantaneous];
// [push setAngle:-M_PI/4 magnitude:5.0f]; //右上角45度
CGVector pushDirection = {0.5, -0.5}; //setAngle: magnitude:替代方法
[push setPushDirection:pushDirection];
[push setMagnitude:5.0f];
[_animator addBehavior:push];
}
}
另一个我个人认为比較实用,就是甩行为
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
_animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
}
- (IBAction)handleSnapGesture:(UITapGestureRecognizer*)gesture
{
CGPoint point = [gesture locationInView:self.view];
// 移除甩行为
[_animator removeBehavior:_snap];
_snap = [[UISnapBehavior alloc] initWithItem:_box snapToPoint:point];
[self.animator addBehavior:_snap];
}
另一个就是类似桌面随手腕角度改变视图位移的方法
//设置山在X轴的偏移范围-50.0~50.0
UIInterpolatingMotionEffect *mountainEffectX;
mountainEffectX = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x"
type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
mountainEffectX.maximumRelativeValue = @50.0;
mountainEffectX.minimumRelativeValue = @-50.0;
[self.mountain addMotionEffect:mountainEffectX]; //设置树在X轴的偏移范围-100.0~100.0
UIInterpolatingMotionEffect *treeEffectX;
treeEffectX = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x"
type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
treeEffectX.maximumRelativeValue = @100.0;
treeEffectX.minimumRelativeValue = @-100.0;
[self.tree addMotionEffect:treeEffectX];
<图形图像,动画,多媒体> 读书笔记 --- 力学行为特性的更多相关文章
- <图形图像,动画,多媒体> 读书笔记 --- AirPlay
AirPlay技术是之前一直没有接触过的技术,正好这次做一个笔记 共用: 1.能够通过AirPlay将iOS和MAC设备上的视频或音频输出到高清电视上或高保真音响 2.能够通过AirPlay将iOS和 ...
- <图形图像,动画,多媒体> 读书笔记 --- 音效
音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号,通过音频编码,变成音频数字信号保存到某种格式文件里.在播放过程中在对音频文件解码,解码出的信号通过扬声器等设备就能够转成音波.音 ...
- <图形图像,动画,多媒体> 读书笔记 --- 录制与编辑视频
使用UIImagePickerController 进行录制 #import "ViewController.h" #import <MobileCoreServices/M ...
- iOS 图形图像动画 Core Animation
//Core Animation #define WeakSelf __weak __typeof(self) weakSelf = self #define StrongSelf __strong ...
- 《Java并发编程实战》第九章 图形用户界面应用程序界面 读书笔记
一.为什么GUI是单线程化 传统的GUI应用程序通常都是单线程的. 1. 在代码的各个位置都须要调用poll方法来获得输入事件(这样的方式将给代码带来极大的混乱) 2. 通过一个"主事件循环 ...
- 关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了
关东升的<iOS实战:图形图像.动画和多媒体卷(Swift版)>上市了 承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提 ...
- WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形
原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形 说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘> ...
- WPF,Silverlight与XAML读书笔记第四十三 - 多媒体支持之文本与文档
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. Glyphs对象(WPF,Silverlig ...
- 《android开发艺术探索》读书笔记(七)--动画
接上篇<android开发艺术探索>读书笔记(六)--Drawable No1: 自定义动画:派生一种新动画只需要继承Animation这个抽象类,然后重写它的initialize和app ...
随机推荐
- android变化HOLO对话风格
andriod风修改对话框格,通过设置theme实现.一些要素需要通过Java代码更改,下面的对话框更改的步骤的例子称号. 1.写文本样式. DIALOG标题是textview,在sytles.xml ...
- Winpcap网络编程十之Winpcap实战,两台主机通过中间主机通信
注:源码等等的我不会全然公开的,此篇文章写出来为大家的网络编程或者课程设计提供一定的思路.. 好,本次我们须要完毕的任务是: 完毕两台主机通过中间主机的数据通信(网络层) 添加基于IP地址的转发功能 ...
- 它们的定义UIAlertView
code4App有很多伟大的上方UI特效代码,,好牛逼啊,这效果,太炫了,哇,怎么自己写不出来.事实上,再炫的特效,都是依据苹果系统的框架而来,假设我们了解系统框架实现的原理,也就能写出属于自己自己定 ...
- MVC 定义JsonpResult实现跨域请求
MVC 定义JsonpResult实现跨域请求 1:原理 在js中,XMLHttpRequest是不能请求不同域的数据,但是script标签却可以,所以可以用script标签实现跨域请求.具体是定义一 ...
- (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...
- Delphi 3D Glscene安装
GLScene开源库Delphi基于提供OpenGL的3D框架.由GLScene组件,您可以轻松地创建和渲染你的3D幕后.令人奇怪的是,.对于这样一个很好的开源库.该网络无法找到完整的安装说明,甚至G ...
- 【Hibernate步步为营】--复合主键映射具体解释
上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入d ...
- Android利用网络编程HttpClient批量上传(两)AsyncTask+HttpClient监测进展情况,并上传
请尊重别人的劳动.转载请注明出处: Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听 执行效果图: 我曾在<Andro ...
- js中frame的操作问题
这里以图为例,在这里把frame之间的互相操作简单列为:1变量2方法3页面之间元素的互相获取. A 首先从 父(frameABC)------->子(frameA,frameB,frameC) ...
- 我的MYSQL学习心得(五)
原文:我的MYSQL学习心得(五) 我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...