UIKit Dynamics添加重力/碰撞/反弹来重定位子视图
我正在尝试使用UIKit Dynamics向下移动子视图。 我需要将子视图移到特定位置,但它不起作用,它会一直沿着主视图移动。 这是我的代码:
UIView *mySubview = [self.view viewWithTag:102];
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
self.gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[mySubview]];
self.gravityBehavior.magnitude = 1;
[self.animator addBehavior:self.gravityBehavior];
self.collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[ mySubview]];
[self.collisionBehavior addBoundaryWithIdentifier:@"bottom"
fromPoint:CGPointMake(352, 233)
toPoint:CGPointMake( 352,700)];
self.collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;
[self.animator addBehavior:self.collisionBehavior];
self.bounceBehaviour = [[UIDynamicItemBehavior alloc] initWithItems:@[ mySubview]];
self.bounceBehaviour.elasticity = 0.6;
[self.animator addBehavior:self.bounceBehaviour];
我想要做的是让子视图下降并反弹回我想要的位置,在这种情况下,我希望子视图有最终的origen(352,700)
你们中的任何人都知道如何做到这一点? 或工作?
我会非常感谢你的帮助。
在什么设备上你尝试你的iPhone的代码高于4S的时候,你的视图的高度是568,因此当你将视点设置为CGPointMake(352,700)时,你的子视图会在你的框架下面,你的iphone在纵向模式下的高度将会是568和320在景观模式,所以你使用哪种模式?
碰撞代码不应该是相反的,因为您希望子视图在达到底部时回到其原始位置? 如将您的值更改为
[self.collisionBehavior addBoundaryWithIdentifier:@"bottom"
fromPoint:CGPointMake(352, the total here should be 568 which you would get by adding your subview's height and y-value)
toPoint:CGPointMake( 352,233)];
或者在这个委托方法中改变你的子视图的位置
- (void)collisionBehavior:(UICollisionBehavior *)behavior endedContactForItem:(your subview) withItem:(bottom of your view) {
subview.frame=CGRectMake(352,233 ,subview height ,subview width);
}
这会让你的子视图从下面转到原来的位置
链接地址: http://www.djcxy.com/p/96783.html上一篇: UIKit Dynamics add gravity/collision/bounce to relocate a subview