<commit_before>---
layout: post
title: UIKit Dynamics学习
categories: ios
description: 为自己的项目加入一些动画效果。
keywords: UIKit Dynamics
---
本人进行初次学习该框架，在闲时无聊写一下简单的demo为自己丰富知识内容。

UIKit Dynamics是iOS7以后的新增的类，可以很好地改善用户体验。要实现该行为，可以创建一个UIDynamicsAnimator(动力学动画)。对于每个动力学动画生成器可以，使用各种属性和行为进行定制，例如`重力`，`碰撞检测`，`密度`，`摩擦力`等等。

常用的类有：UIAttachmentBehavior,UICollisionBehavior,UIDynamicItemBehavior,UIGravityBehavior,UIPushBehavior,UISnapBehavior这六类。


## 实现UIKit Dynamics

### 重力的实现

```
frogImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 300, 20, 20)];
    frogImageView.backgroundColor = [UIColor redColor];
    frogImageView.userInteractionEnabled = YES;
    [self.view addSubview:frogImageView];
    animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
    //重力
    UIGravityBehavior * gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[frogImageView]];
    //设置重力方向
    [gravityBehavior setAngle:0 magnitude:0.1];
    [animator addBehavior:gravityBehavior];
 ```
 注意：动态图必须是参考试图的子试图，否则力学动画生成器将不会有任何效果
 
### 碰撞
<commit_msg>UIKitDynamics<commit_after>---
layout: post
title: UIKit Dynamics学习
categories: ios
description: 为自己的项目加入一些动画效果。
keywords: UIKit Dynamics
---
本人进行初次学习该框架，在闲时无聊写一下简单的demo为自己丰富知识内容。

UIKit Dynamics是iOS7以后的新增的类，可以很好地改善用户体验。要实现该行为，可以创建一个UIDynamicsAnimator(动力学动画)。对于每个动力学动画生成器可以，使用各种属性和行为进行定制，例如`重力`，`碰撞检测`，`密度`，`摩擦力`等等。

常用的类有：UIAttachmentBehavior,UICollisionBehavior,UIDynamicItemBehavior,UIGravityBehavior,UIPushBehavior,UISnapBehavior这六类。


## 实现UIKit Dynamics

### 重力的实现


```
frogImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 300, 20, 20)];
    frogImageView.backgroundColor = [UIColor redColor];
    frogImageView.userInteractionEnabled = YES;
    [self.view addSubview:frogImageView];
    animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
    //重力
    UIGravityBehavior * gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[frogImageView]];
    //设置重力方向
    [gravityBehavior setAngle:0 magnitude:0.1];
    [animator addBehavior:gravityBehavior];
 ```
 
 注意：动态图必须是参考试图的子试图，否则力学动画生成器将不会有任何效果
 
### 碰撞

{'fraction_non_alphanumeric': 0.1126491646778043, 'fraction_numerical': 0.012410501193317422, 'mean_word_length': 7.251968503937008, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4218466', 'n_tokens_mistral': 1011, 'n_tokens_neox': 1005, 'n_words': 104}