新浪微博 有道云笔记 麦库 EverNote Pocket Instapaper 更多

01-UIDynamic简单演练demo源代码

    1. 源代码下载:

    01-简单演练.zip
    72.0 KB
  1. //
  2. //  ViewController.m
  3. //  01.简单演练
  4. //
  5. //  Created by apple on 13-12-24.
  6. //技术博客http://www.cnblogs.com/ChenYilong/新浪微博http://weibo.com/luohanchenyilong

  7. #import "ViewController.h"

  8. @interface ViewController ()
  9. {
  10.     UIDynamicAnimator *_animator;
  11. }
  12. @end

  13. @implementation ViewController
  14. /*
  15.  要使用UIDynamic的步骤
  16.  
  17.  1. 实例化一个仿真者,用于物理仿真
  18.     参照视图:用于指定仿真的范围
  19.  
  20.     Box2DWorld(仿真世界),10m
  21.  2. 指定要仿真(模拟)的行为(动作),并指定哪些对象遵守该动作
  22.  3. 将行为添加到仿真者,仿真立刻开始
  23.  
  24.  */
  25. - (void)viewDidLoad
  26. {
  27.     [super viewDidLoad];

  28.     UIView *view = [[UIView alloc]initWithFrame:CGRectMake(110, 100, 100, 100)];
  29.     view.backgroundColor = [UIColor blueColor];
  30.     [self.view addSubview:view];
  31.     
  32. //    [view.layer setTransform:CATransform3DRotate(view.layer.transform, M_PI_4, 0, 0, 1)];
  33.     view.transform = CGAffineTransformMakeRotation(M_PI_4);

  34.     UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(80, 50, 50, 50)];
  35.     redView.backgroundColor = [UIColor redColor];
  36.     [self.view addSubview:redView];
  37.     
  38.     // 1. 谁来仿真?UIDynamicAnimator来负责仿真
  39.     UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
  40.     
  41.     // 2. 仿真个什么动作?自由落体
  42.     UIGravityBehavior *gravity = [[UIGravityBehavior alloc] initWithItems:@[view, redView]];
  43.     
  44.     // 3. 碰撞检测
  45.     UICollisionBehavior *collision = [[UICollisionBehavior alloc] initWithItems:@[view, redView]];
  46.     // 设置不要出边界,碰到边界会被反弹
  47.     collision.translatesReferenceBoundsIntoBoundary = YES;
  48.     
  49.     // 4. 开始仿真
  50.     [animator addBehavior:gravity];
  51.     [animator addBehavior:collision];
  52.     //本文永久链接,转载请注明出处:http://www.cnblogs.com/ChenYilong/p/3490312.html
  53.     // 5. 使负责仿真的UIDynamicAnimator对象时刻存在于整个事件中—>创建成员变量记录之.否则出了viewDidLoad就会被销毁.否则出了viewDidLoad就会被销毁,而仿真是个长时间持续存在的事件.
  54.     _animator = animator;
  55. }

  56. @end
posted @ 2013-12-25 11:36  iTeaTime(技术清谈)  阅读(419)  评论(0编辑  收藏  举报