[英]UIKit Dynamics doesn't allow me to animate a UIView's centre
我有一个UIView
附加到UICollisionBehavior
。 当尝试在屏幕上轻按一个新位置时,我正在尝试设置其中心的动画,但是使用此代码块似乎无法做到这一点:
[UIView animateWithDuration:0.7f
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState
animations:^{
[self.mainCharacter setCenter:location];
}
completion:nil];
谁能建议一种更UIKitDynamics友好的方式来做到这一点?
谢谢。
UPDATE
因此,我的问题的第一部分类似于发布的问题,并且可能是重复的,但是,尽管从技术上讲,它解决了该问题的第一部分中的问题,但似乎确实干扰了UICollisionBehavior
碰撞测试。
这个问题的第二部分是询问是否有更好的方法可以做到这一点。 我以为这将有可能加快UIDynamicItem
在使用在给定时间的速度UIPushBehavior
,但它似乎是不变的。
任何人都可以推荐如何使用UIPushBehavior
来完成上述操作吗?
在UIKit Dynamics中,当您要动画化更改中心时,可以将UISnapBehavior
添加到UIDynamicAnimator
(首先删除所有先前的捕捉行为)。 例如,为UISnapBehavior
创建一个属性,然后您的轻UISnapBehavior
手势识别器可以将其捕捉到该点(以纪念UICollisionBehavior
),如下所示:
- (void)handleTap:(UITapGestureRecognizer *)gesture
{
if (self.snap)
[self.animator removeBehavior:self.snap];
CGPoint point = [gesture locationInView:gesture.view];
UISnapBehavior *snap = [[UISnapBehavior alloc] initWithItem:self.viewToAnimate snapToPoint:point];
[self.animator addBehavior:snap];
self.snap = snap;
}
您可以通过调整UISnapBehavior
的damping
属性来控制“ UISnapBehavior
。 如果您不喜欢它在捕捉时旋转视图,还可以添加一个UIDynamicItemBehavior
allowsRotation
设置为NO
allowsRotation
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.