15.UIDynamic 物理引擎
来源:互联网 发布:如何雇佣网络水军 编辑:程序博客网 时间:2024/04/23 18:30
- UIDynamic是物理引擎,模仿物理效果
- 知名2D物理引擎 Box2d Chipmunk
- 只有遵守了UIDynamicItem协议的对象
- 重力行为
- UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
- 弹性行为UICollisionBehavior *collision = [[UICollisionBehavior alloc] initWithItems:--];
- 通常用辅助行为来设置弹性系数
- [collision addBoundaryWithIdentifier:@"c1" fromePoint:CGPointMake toPoint;自定义一条线为边界
- UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 300, 400, 150)];
- 检测碰到的是哪一根线 设置代理<UICollisionDelegate>
- (void)collisionBehavior -------withBoundaryIdentifier当碰撞的时候就会调用
- 碰撞模式
- item.allowsrotation = YES 是否旋转
- 捕捉行为 UISnapBehavior *snap = [[UISnapBehavior alloc]initWithItem:self.myView snapToPoint:CGPoint]; 比如移动到手指所触摸的点
- 附着行为 需要重力行为initWIthitem:标示产生附着行为的物体 attachedToAnchor:附着的点 没有重力行为附着行为没效果
- 只要重力行为有效果,就会调用 [ --- setAction:^{ 可以在这个方法中划线 }];
- 自定义了view为CZView 在控制器要获取相应的定义的变量要强转CZView = (CZView *)self.view;
- attachiment.damping = 0.5 阻尼系数
- 中心点偏移的改变
- 推力行为[self.view converPoint:(CGPoint) fromView:(UIView*)]; 把fromView中的点坐标转换成self.view的点坐标。
- UIPushBehavior *push = [[UIPushBehavior alloc] initWithItems:@[] mode:UIPushBehaviorMode Continuous]; Insantaneous 一次性会回去
- [NSURL fileURLWithPath:]本地资源
- 改变原来附着点得锚点就可以移动原来的画面了
- 移除附着点
- 自定义layer 中要创建layer 用的方法是-(void)drawInContext:(CGContextRef)ctx{};
- 通过代理方法也可以在控制器中进行绘制图形 创建layer
- keyAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];中间快两边慢
UIVIew默认遵守了协议
UICollectionViewLayouetAttributes已经遵循了
UIGravityBehavior 重力行为
UICollisionBehavior碰撞行为
UIGravityBehavior *grivity = [[UIGravityBehavior alloc] initWithItems:@[self.myView];
grivity.gravityDirection = CGVectorMake( ,);
grivity.angle = 0;弧度方向 跟上面的设置有矛盾,哪个在下面哪个起作用M_PI_2
grivity.magnitude = 1; 设置重力加速度 和gravityDiretion有矛盾
[animator addBehavior:grivity];
collision.translatesRefrernceBoundsIntoBoundary = YES;
[self.animator addBehavior:collision];
UIDynamicItemBehavior *item =UIDynamicItemBehavior alloc] initWithItems:@[self.myView]];辅助行为
item.resistance = 1;阻力
item.elasticity = 0.5;弹性系数
只要是行为就要添加
[collision addBoundaryWithIdentifier:@"c2" forPath:path];
collision.collisionDelegate = self;
beganContactForItem:标示碰撞的物体
identifier:标示边界的标示符
atPoint:标示碰撞的点
UIView *view = (UIView*) item; 要强转
collision.collisionMode = UICollisionBehaviiorModeItems; 只和物体碰撞
Boundaries只和边界碰撞
everything都碰撞
阻力系数snap.damping = 0.5; 取值范围是0.5~1; 默认应该是0.5
UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:self.myView attachedToAnchor:point];
attachiment.frequency = 0.5频率
attachiment.length 是附着点和中心点得距离
UIAttachmentBehavior *attachment = [[UIAttachmentbehavior alloc] initWithItem:@[self.myView] offsetFromCenter:UIOffset attachedToAnchor:CGPoint];
触摸点 和物体的中心点进行计算 加速度方向
方向 push.pushDirection = CGVectorMake(pushX, pushY);
加速度 push.magnitude = sqrt();
[NSURL urlWith:http://]网络资源
self.attachment.anchorPoint = point;
[self.animator remove ----];
记住在自定义中的地方要重绘。[layer setNeedsDisplay] view也有这个方法
代理或者继承都要重绘
- 15.UIDynamic 物理引擎
- UIDynamic物理引擎
- UIDynamic-物理引擎
- UIDynamic 物理引擎
- iOS 之物理仿真引擎-UIDynamic简介(一)
- iOS 之物理仿真引擎-UIDynamic简介(二)
- iOS 之物理仿真引擎-UIDynamic简介(三)
- IOS UIDynamic仿物理引擎-浮动碰撞效果
- iOS7 物理动力学UIDynamic
- UIDynamic之物理特性
- UIDynamic 物理动效
- UIDynamic 物理仿真
- iOS-UIDynamic物理仿真-重力、碰撞
- iOS-UIDynamic物理仿真-捕捉-UISnapBehavior
- iOS-UIDynamic物理仿真-附着-UIAttachmentBehavior
- iOS-UIDynamic物理仿真-推力-UIPushBehavior
- UIDynamic物理仿真行为代码示例
- iOS中UIDynamic物理仿真详解
- 14. 核心动画
- CSDN与博客园博文基本同步
- Android studio导入第三方项目(以Volley为例)
- linux环境编程之 fork() || fork()
- [疯狂Java]TCP:TCP协议的概念、Socket通信、超时等待
- 15.UIDynamic 物理引擎
- 学习google编程风格
- 使用include标签引入布局
- 精华阅读第 9 期 |滴滴出行 iOS 客户端架构演进之路
- Android startActivity源码详解
- xfire web service导致cpu100%问题分析
- LintCode 删除链表中等于给定值val的所有节点
- Android 截屏并保存
- css 长单词不换行溢出容器的解决方法 word-wrap与word-break