zoukankan      html  css  js  c++  java
  • iOS学习_UIDynamic(物理仿真)学习笔记

    UIDynamic : 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象如:重力、弹性碰撞等

     使用步骤 :

    1.创建物理仿真器 :

    [[ UIDynamicAnimator alloc] initWithReferenceView : ]//View表示物理仿真的范围

    2.创建物理仿真行为,添加仿真元素 :

    [[UIGravityBehavior alloc]initWithItems:];//放进去的是数组

    3.将物理仿真行为添加到仿真器中 :

    [anim addBehavior:gravity]

     

    我的记忆方法(仅仅是记忆方法,如果能记住就不要看记忆方法了) :

    仿真器   -->  大海        

    仿真行为 -->  船 

    View     -->  人

    创建一个仿真器(大海),创建仿真行为(船),船上要有人(View),把船添加到大海中去,就可以翱翔了。

     

    UIDynamic提供了几个物理仿真行为

    1.重力行为: UIGravityBehavior

    2.碰撞行为:UICollisionBehavior

    3.捕追行为 : UISnapBehavior

    4.推动行为 : UIPushBehavior

    5.附着行为 : UIAttachmentBehavior 

    6.动力元素行为 : UIDynamicItemBehavior

    使用例子 : 

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        UIDynamicAnimator * animator = [[UIDynamicAnimator alloc]initWithReferenceView:self.containView];

        self.animator = animator;//注意一定要持有物理仿真器,不然还没开始执行,animator就被释放

        UIGravityBehavior * behavior0 = [[UIGravityBehavior alloc]initWithItems:@[self.testView]];

        UICollisionBehavior * behavior1 = [[UICollisionBehavior alloc]initWithItems:@[self.testView]];

        behavior1.translatesReferenceBoundsIntoBoundary = YES;//把view的bounds设为边界

        [animator addBehavior:behavior0];

        [animator addBehavior:behavior1];

    }

    相关知识点及注意点 : 

    (1)任何遵守UIDynamicItem协议的对象都可以进行仿真行为,因为UIView默认添加了UIDynamic协议,所以所有的UI控件都能物理仿真

    (2)所有的仿真行为可以独立进行也可以同时使用 ,所有的物理仿真行为都继承来自UIDynamicBehavior

     (3) 吸附行为默认只能吸附一次,如果是多次吸附必须从仿真器中移除在重新添加

  • 相关阅读:
    实验四
    实验三 进程调度模拟程序
    实验二 调度
    一个完整的大作业
    数据结构化与保存
    爬取新闻列表
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
    字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
  • 原文地址:https://www.cnblogs.com/TangKaiFu/p/4447496.html
Copyright © 2011-2022 走看看