• UIDynamic--动力元素行为:UIDynamicItemBehavior


    属性分析:

    1 @property (nonatomic, readonly, copy) NSArray* items;  
    2   
    3 @property (readwrite, nonatomic) CGFloat elasticity; // Usually between 0 (inelastic) and 1 (collide elastically) 弹性系数 在0~1之间  
    4 @property (readwrite, nonatomic) CGFloat friction; // 0 being no friction between objects slide along each other 摩擦力系数  
    5 @property (readwrite, nonatomic) CGFloat density; // 1 by default 跟size大小相关,计算物体块的质量。  
    6 @property (readwrite, nonatomic) CGFloat resistance; // 0: no velocity damping 阻力系数  
    7 @property (readwrite, nonatomic) CGFloat angularResistance; // 0: no angular velocity damping 旋转阻力  
    8 @property (readwrite, nonatomic) BOOL allowsRotation; // force an item to never rotate  是否能旋转

    代码:

     1 //
     2 //  YFDynamicItemViewController.m
     3 //  BigShow1949
     4 //
     5 //  Created by apple on 16/8/25.
     6 //  Copyright © 2016年 BigShowCompany. All rights reserved.
     7 //
     8 
     9 #import "YFDynamicItemViewController.h"
    10 
    11 @interface YFDynamicItemViewController ()
    12 @property(nonatomic,strong)UIDynamicAnimator *animator;
    13 @property (nonatomic, strong) UIView *redView;
    14 
    15 
    16 @end
    17 
    18 @implementation YFDynamicItemViewController
    19 
    20 - (void)viewDidLoad {
    21 
    22     [super viewDidLoad];
    23     self.view.backgroundColor = [UIColor whiteColor];
    24     
    25     
    26     UIView *redView = [[UIView alloc] init];
    27     redView.frame = CGRectMake(100, 100, 100, 100);
    28     redView.backgroundColor = [UIColor redColor];
    29     self.redView = redView;
    30     [self.view addSubview:redView];
    31 }
    32 
    33 
    34 
    35 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    36 
    37     [self testGravityAndCollsion];
    38 }
    39 /**
    40  *  重力行为+碰撞检测
    41  */
    42 -(void)testGravityAndCollsion
    43 {
    44     //1.重力行为
    45     UIGravityBehavior *gravity=[[UIGravityBehavior alloc]init];
    46     [gravity addItem:self.redView];
    47     
    48     //2碰撞检测行为
    49     UICollisionBehavior *collision=[[UICollisionBehavior alloc]init];
    50     [collision addItem:self.redView];
    51     //让参照视图的边框成为碰撞检测的边界
    52     collision.translatesReferenceBoundsIntoBoundary=YES;
    53     
    54     // 动力元素行为
    55     UIDynamicItemBehavior * itemBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[self.redView]];
    56     itemBehavior.elasticity = 1.2;
    57     itemBehavior.friction = 1.;
    58     itemBehavior.density = 1;
    59     itemBehavior.resistance = 3; // 阻力系数
    60     itemBehavior.allowsRotation = NO;
    61     itemBehavior.angularResistance = 1;
    62     
    63     //3.执行仿真
    64     [self.animator addBehavior:gravity];
    65     [self.animator addBehavior:collision];
    66     [self.animator addBehavior:itemBehavior];
    67 }
    68 
    69 
    70 -(UIDynamicAnimator *)animator
    71 {
    72     if (_animator==nil) {
    73         //创建物理仿真器(ReferenceView:参照视图,设置仿真范围)
    74         self.animator=[[UIDynamicAnimator alloc]initWithReferenceView:self.view];
    75     }
    76     return _animator;
    77 }
    78 
    79 
    80 @end
  • 相关阅读:
    钓鱼网站相关数据
    位置编码
    Nacos 详解,有点东西
    从源码里的一个注释,我追溯到了12年前,有点意思。
    初看一脸问号,看懂直接跪下!
    【git】解决 git clone 时速度较慢
    《码处高效:Java开发手册》之代码风格
    Nginx的安装与运行
    解决windows下WslRegisterDistribution failed with error: 0x80070050的问题
    保姆级教程:VsCode调试docker中的NodeJS程序
  • 原文地址:https://www.cnblogs.com/bigshow1949/p/5806954.html
Copyright © 2020-2023  润新知