亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS-UIDynamic

2019-11-14 20:41:12
字體:
來源:轉載
供稿:網友

UIDynamic中的三個重要概念

Dynamic Animator:動畫者,為動力學元素提供物理學相關的能力及動畫,同時為這些元素提供相關的上下文,是動力學元素與底層iOS物理引擎之間的中介,將Behavior對象添加到Animator即可實現動力仿真
Dynamic Animator Item:動力學元素,是任何遵守了UIDynamicItem協議的對象,從iOS 7.0開始,UIView和UICollectionViewLayoutAttributes默認實現該協議。如果自定義的對象實現了該協議,即可通過Dynamic Animator實現物理仿真
UIDynamicBehavior:仿真行為,是動力學行為的父類,基本的動力學行為類UIGravityBehavior、UICollisionBehavior、UIAttachmentBehavior、UISnapBehavior、UipushBehavior以及UIDynamicItemBehavior均繼承自該父類
 
動力學動畫元素(Dynamic Animator Item)協議
只有遵守了UIDynamicItem協議的對象才可以參與到UI動力學仿真中
從iOS 7開始,UIView和UICollectionViewLayoutAttributes 類默認實現了該協議
協議定義的屬性:
bounds:Dynamic animator需要動畫元素的邊框時調用,只讀屬性,用于計算物體的邊界以及質量
center:動力學元素的中心點,讀寫屬性
transform:動力學元素的旋轉角度,讀寫屬性(需要指定Layer的形變屬性)
 
動力學行為(Dynamic Behavior)
iOS7.0中提供的動力學行為包括:
UIGravityBehavior:重力行為
UICollisionBehavior:碰撞行為
UIAttachmentBehavior:附著行為
UISnapBehavior:吸附行為
UIPushBehavior:推行為
UIDynamicItemBehavior:動力學元素行為
所有的UIDynamicBehavior都是可以獨立作用,同時也遵守力的合成。也就是說,組合使用行為可以實現一些較復雜的效果
 
重力行為(Gravity)
重力行為用于給動力學元素指定一個重力向量

// 實例化一個重力行為,并傳入需要做動力仿真的對象view

UIGravityBehavior *gravity = [[UIGravityBehavior alloc] initWithItems:@[view]];

// 將重力行為添加到animator

[animator addBehavior:gravity];
 
碰撞行為(Collision)
碰撞行為用于指定一組動力學元素,在指定的邊界范圍內,可以彼此發生碰撞
碰撞行為提供了代理方法,可用于在物體碰撞前、后對動力學元素做碰撞后續的處理

// 實例化碰撞行為,并指定view參與碰撞

UICollisionBehavior *collsion = [[UICollisionBehavior alloc] initWithItems:@[view]];

// 指定是否啟用參照系的邊界

collsion.translatesReferenceBoundsIntoBoundary = YES;

// 將碰撞行為添加至animator

[animator addBehavior:collsion];

 

吸附行為(Snap)

吸附行為可以將視圖通過動畫吸附到某個點上
初始化設定一下UISnapBehavior的initWithItem:snapToPoint:即可
屬性:
damping:振幅大小,默認為0.5f

/ 刪除之前的吸附行為

[_animator removeBehavior:_snap];

CGPoint location = [sender locationInView:self.view];

_snap = [[UISnapBehavior alloc] initWithItem:_boxImageView snapToPoint:location];

// 生成隨機振幅

CGFloat damping = arc4random_uniform(10) + 1;

_snap.damping = damping / 10.0f;

[_animator addBehavior:_snap];

 
附著行為(Attachment)
附著行為描述一個視圖與一個錨點或者另一個視圖相連接的情況
附著行為描述的是兩點之間的連接情況,可以模擬剛性或者彈性連接
在多個物體間設定多個UIAttachmentBehavior,可以模擬多物體連接
屬性:
attachedBehaviorType:連接類型(連接到錨點或視圖)
items:連接視圖數組
anchorPoint:連接錨點
length:距離連接錨點的距離
只要設置了以下兩個屬性,即為彈性連接
damping:振幅大小
frequency:振動頻率

if (UIGestureRecognizerStateBegan == sender.state) {

    // 創建附加剛性行為

      CGPoint anchorPoint = CGPointMake(_boxImageView.center.x, _boxImageView.center.y);

    _attachment = [[UIAttachmentBehavior alloc] initWithItem:_boxImageView offsetFromCenter:UIOffsetMake(-25.0, -25.0) attachedToAnchor:anchorPoint];

    [_animator addBehavior:_attachment];

} else if (UIGestureRecognizerStateChanged == sender.state) {

    // 設置行為的錨點

    [_attachment setAnchorPoint:[sender locationInView:self.view]];

} else if (UIGestureRecognizerStateEnded == sender.state) {

    // 刪除附加行為

    [_animator removeBehavior:_attachment];

}

 

//附加彈性行為

if (UIGestureRecognizerStateBegan == sender.state) {

    CGPoint anchor = CGPointMake(_boxImageView.center.x, _boxImageView.center.y - 100);

    _attachment = [[UIAttachmentBehavior alloc] initWithItem:_boxImageView attachedToAnchor:anchor];

    [_animator addBehavior:_attachment];

    [_attachment setFrequency:1.0f];

    [_attachment setDamping:0.1f];

} else if (UIGestureRecognizerStateChanged == sender.state) {

    [_attachment setAnchorPoint:[sender locationInView:self.view]];

} else if (UIGestureRecognizerStateEnded == sender.state) {

    [_animator removeBehavior:_attachment];

}

 
推行為(Push)
•推行為可以為一個視圖施加一個作用力,該力可以是持續的,也可以是一次性的
•可以設置力的大小,方向和作用點等信息
•屬性:
•mode:推動類型(一次性或是持續推)
•active:是否激活,如果是一次性推,需要激活
•angle:推動角度
•magnitude:推動力量

// 計算兩點之間距離

CGFloat distance = sqrtf(powf(p.x - _firstPoint.x, 2.0) + powf(p.y - _firstPoint.y, 2.0));

CGFloat angle = atan2(p.y - _firstPoint.y, p.x - _firstPoint.x);

_push.magnitude = distance / 20;

_push.angle = angle;

[_push setActive:YES];

 
動力學元素行為(DynamicItem)
•是一個輔助的行為,用來設置運動學元素參與物理仿真過程中的參數,如:彈性系數、摩擦系數、密度、阻力、角阻力以及是否允許旋轉等
Øelasticity(彈性系數):決定了碰撞的彈性程度,比如碰撞時物體的彈性
Øfriction(摩擦系數) :決定了沿接觸面滑動時的摩擦力大小
Ødensity(密度): 跟size結合使用,計算物體的總質量。質量越大,物體加速或減速就越困難
Øresistance(阻力):決定線性移動的阻力大小,與摩擦系數不同,摩擦系數只作用于滑動運動
ØangularResistance(角阻力) :決定旋轉運動時的阻力大小
ØallowsRotation(允許旋轉):這個屬性很有意思,它在真實的物理世界沒有對應的模型。設置這個屬性為 NO 物體就完全不會轉動,而無論施加多大的轉動力
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91po在线观看91精品国产性色| 亚洲电影av在线| 欧美亚洲视频一区二区| 欧美xxxx做受欧美.88| 欧美一级电影久久| 亚洲欧美激情四射在线日| 一区二区三区回区在观看免费视频| 青青草国产精品一区二区| 亚洲精品国产精品自产a区红杏吧| 日韩va亚洲va欧洲va国产| 高清亚洲成在人网站天堂| 日韩av一区二区在线观看| 国产69久久精品成人| 国产一区二区黄| 久久久影视精品| 热久久这里只有精品| 国产亚洲一区二区精品| 亚洲欧美福利视频| 亚洲乱码国产乱码精品精天堂| 亚洲成色www8888| 欧美激情女人20p| 国产99久久精品一区二区 夜夜躁日日躁| 久久免费少妇高潮久久精品99| 亚洲欧美变态国产另类| 亚洲夜晚福利在线观看| 91中文字幕在线观看| 国产日韩中文在线| 丝袜美腿精品国产二区| 成人xvideos免费视频| 成人欧美一区二区三区在线湿哒哒| 久久免费视频这里只有精品| 俺去了亚洲欧美日韩| 美女视频黄免费的亚洲男人天堂| 欧美人交a欧美精品| 岛国av在线不卡| 在线观看亚洲区| 亚洲视频在线免费看| 26uuu久久噜噜噜噜| 国产精品亚洲综合天堂夜夜| 国产精品亚洲网站| 久久中国妇女中文字幕| 亚洲一区二区免费| 青青草国产精品一区二区| 精品国产户外野外| 日韩国产在线播放| 久久久久久av| 久久精彩免费视频| 欧美性猛xxx| 亚洲欧美在线一区二区| 欧美日韩亚洲91| 亚洲精品理论电影| 国产欧美精品一区二区三区介绍| 日本精品视频在线观看| 高跟丝袜欧美一区| 亚洲综合大片69999| 亚洲精品一二区| 92看片淫黄大片看国产片| 美女扒开尿口让男人操亚洲视频网站| 国产精品久久二区| 伊人亚洲福利一区二区三区| 亚洲欧美中文日韩在线v日本| 欧美精品成人91久久久久久久| 国产精品爽爽爽| 欧美一级大片视频| 91免费版网站入口| 亚洲精品电影网在线观看| 北条麻妃在线一区二区| 亚洲激情国产精品| 日韩影视在线观看| 亚洲欧美国产日韩中文字幕| 日韩中文字幕国产| 日韩三级影视基地| 91av在线免费观看视频| 日韩欧美黄色动漫| 色综合色综合网色综合| 国产日韩精品在线观看| 91精品国产91久久久久久最新| 亚洲美腿欧美激情另类| 欧美区二区三区| 91地址最新发布| 国产精品日韩在线一区| 伊人久久久久久久久久久久久| 成人福利视频在线观看| 久久这里只有精品视频首页| 日韩精品中文字幕有码专区| 日韩中文字幕网| 亚洲国产精品一区二区久| 久久精品小视频| 亚洲大尺度美女在线| 中文字幕精品在线视频| 91在线看www| 中文字幕精品视频| 国产精品福利网站| 国内精品久久久久久久久| 欧美午夜精品久久久久久久| 亚洲欧美综合另类中字| 91久久久精品| 成人国产精品免费视频| 亚洲黄色有码视频| 国产精品久久久久久久久| 久久久精品久久久| 亚洲欧美国内爽妇网| 正在播放亚洲1区| 韩国三级电影久久久久久| 俺去了亚洲欧美日韩| 国产欧美精品在线| 国产精品男人的天堂| 国产精品一区二区在线| 欧美日本啪啪无遮挡网站| 57pao国产成人免费| 国产精品永久免费视频| 97视频免费在线看| 欧美日本国产在线| 久久久人成影片一区二区三区| 成人欧美一区二区三区在线| 欧美情侣性视频| 国产免费一区二区三区香蕉精| 中文字幕自拍vr一区二区三区| 日韩中文字幕精品视频| 九九热精品视频| 精品福利在线视频| 日韩在线视频观看正片免费网站| 久久影院中文字幕| 欧美一级视频在线观看| 俺去了亚洲欧美日韩| 国产97在线亚洲| 日韩欧美在线视频| 91欧美精品午夜性色福利在线| 91在线精品视频| 97精品在线观看| xvideos国产精品| 色婷婷av一区二区三区久久| 中文一区二区视频| 亚洲娇小xxxx欧美娇小| 成人乱色短篇合集| 久久精品这里热有精品| 亚洲无av在线中文字幕| 日韩不卡中文字幕| 亚洲最大的av网站| 久久精品国产欧美亚洲人人爽| 久久这里有精品视频| 亚洲最大中文字幕| 日韩国产在线看| 欧美在线免费视频| 亚洲视频在线视频| 国产精品1区2区在线观看| 久久国产加勒比精品无码| 伊人久久免费视频| 国产精品视频网| 日韩中文字幕免费视频| 久久免费视频在线| 日韩美女视频在线观看| 精品国产91久久久久久老师| 国产日韩在线看片| 久久99精品视频一区97| 久久久久国色av免费观看性色| 久久久亚洲精品视频| 欧美一区二区.| 成人观看高清在线观看免费| 中文字幕视频一区二区在线有码| 国产精品久久久久久久一区探花| 欧美另类第一页| 日韩在线免费观看视频| 国产91精品黑色丝袜高跟鞋|