iOS_实现物理仿真中的圆形碰撞
来源:互联网 发布:windows使用cd命令 编辑:程序博客网 时间:2024/06/01 08:35
- 由于UI控件都矩形的,即使进行对layer层进行,直接对控件进行圆形切割,在进行物理仿真时,控件依旧是按照矩形进行物理仿真。
- 通过查看,我们可以发现所有的UIView内都包含
UIDynamicItem
,在这里面包含一个枚举UIDynamicItemCollisionBoundsType
,我们可以通过设定这个值来控制控件是否进行圆形碰撞仿真。 - 但是,每个UIView都包含有属性类型为
UIDynamicItemCollisionBoundsType
的属性值,而且只读。为了更改这个值,我们就需要重新创建继承自UIView或者UIView子类的控件,然后在创建的类内定义新的类型为UIDynamicItemCollisionBoundsType
的属性值,这样可以重写父类的属性值。
示例:
@interface RoundImageView : UIImageView@property (nonatomic,assign) UIDynamicItemCollisionBoundsType collisionBoundsType;@end
- 记得在实现文件内添加
@synthesize collisionBoundsType;
示例:
@implementation RoundImageView// 记得添加此行代码@synthesize collisionBoundsType;/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect {}*/@end
然后在调用控件的创建的同时,为控件的collisionBoundsType
属性赋值为UIDynamicItemCollisionBoundsTypeEllipse
示例:
RoundImageView *imageView = [[RoundImageView alloc]initWithFrame:CGRectMake(self.bounds.size.width/2, self.bounds.size.height/2, 30, 30)]; imageView.layer.masksToBounds = YES; imageView.backgroundColor = [UIColor colorWithRed:arc4random() % 256/255.0 green:arc4random() % 256/255.0 blue:arc4random() % 256/255.0 alpha:0.5]; imageView.layer.cornerRadius = imageView.bounds.size.width/2; // 此行—————————— imageView.collisionBoundsType = UIDynamicItemCollisionBoundsTypeEllipse; [self addSubview:imageView]; [self.gravity addItem:imageView]; [self.collision addItem:imageView];
效果图:
实现类似摩拜我的贴纸_代码地址:
https://github.com/FlyingKuiKui/PhysicalSimulation.git
阅读全文
0 0
- iOS_实现物理仿真中的圆形碰撞
- 物理仿真中的圆形碰撞
- 实现圆形碰撞函数
- iOS-UIDynamic物理仿真-重力、碰撞
- 物理实验室--Java实现的物理仿真
- 圆形碰撞
- 圆形碰撞
- 物理仿真UIDynamic 介绍 (刚性附着行为)(弹性附着行为) (碰撞检测行为)(二)
- iOS 9中UIDynamics实现真正的圆形碰撞
- 2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascript&C++版)
- 2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascript&C++版)
- 2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascript&C++版)
- 碰撞冲击仿真
- 圆形碰撞算法
- 圆形碰撞判断
- android 圆形碰撞
- 矩形圆形碰撞检查
- 如何实现符合物理定律的碰撞及弹开
- 3 Three.js绘制线
- windows7安装django并创建第一个应用
- windows上如何安装Sqlite
- django 快速搭建blog
- ORACLE大表中删除部分数据最佳方案
- iOS_实现物理仿真中的圆形碰撞
- python3 django1.10 使用mysql服务器
- Unknown compiler version while compiling Boost with MSVC 14.0 (VS 2015)
- Linux工具之grep&&sed&&awk
- python一个命令开启http服务器
- python 常见问题总结
- 使用nginx反向代理,一个80端口下,配置多个微信项目
- python random模块(随机数)详解
- 洗车机的核心技术