进场时,我UINavigationBar在应用程序中的标题出现了一个奇怪的问题interactivePopGestureRecognizer.我制作了一个演示应用来展示这个bug.
UINavigationController.FirstViewController 隐藏了导航栏,并且 interactivePopGestureRecognizer.enabled = NO;Second并且ThirdViewController可以看到导航栏并启用了popgesture.使用popgesture从第二个视图返回到第一个视图时会发生错误.如果您中途拉出第二个视图然后返回第二个视图,导航标题将显示"第二个视图"(如预期的那样).但是当您转到第三个视图时,标题将不会更改为"第三个视图".然后单击第三个视图的后退按钮,导航栏将变得混乱.
请查看我的演示应用程序.任何帮助解释为什么会发生这个错误将不胜感激.谢谢!
对于完全适合动画组方法的动画效果,如Brad Larson的答案所示,我需要动画根据输入继续进行.具体地说是检测到的触摸的触摸和位置.它很容易处理touchesMoved:并为每次触摸设置元素的位置,但它不像核心动画方法那样平滑.
想象一下在沟槽轨道上的大理石.我想把大理石沿着一个方向或另一个方向以任何速度推到任何位置.动画必须做类似的事情,沿着路径移动视觉元素以响应触摸.CAKeyframeAnimation具有完全相同的路径位,但似乎总是希望基于时间过去的帧到帧的过渡,而不是基于任何其他因素,并且在一个方向上.
1月31日更新 - 感谢所有回复到目前为止,但没有一个真正解决问题.我有一个圆形菜单被拖动以选择一个选项.所有这些都需要一起移动,我通过使用一个应用了旋转变换的视图并将逆旋转变换应用于其子视图来解决它,因此图标都以适当的摩天轮方向旋转.当图标沿着略微卵形的路径动画时,它看起来确实更好......大理石描述试图弄清楚我正在尝试做什么.更好的想法可能是想象磁铁可以排斥所有在凹槽中移动的东西 - 移动一个并且它的邻居也可以移动但不一定在拖动的磁铁随着路径弯曲的方向移动.
现在问题是跟随用一个圆创建的简单路径之一,但我真的想知道如何沿任意路径动画对象,仅通过触摸控制位置而不涉及速度或方向的计算.
我需要获得以非常高的频率采样contentOffset的UIScrollView(UICollectionView更确切地说)的值,以便基于contentOffset该滚动视图转换图层.我发现in的采样率scrollViewDidScroll不够快,拾取contentOffset差异足够小,当我快速滑动时执行平滑变换.有没有办法寻找较小的差异,还是我完全错误地解决了这个问题?
我正在探索iOS4.3 SDK并希望实现特定的动画效果.但不知道该怎么做.它是这样的 - 我在屏幕上有一个方框,当用户将手指放在盒子上并拖动他的手指时,盒子应该跟着他.直到这里很容易.我能够像这样实现它 -
-(void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:2];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(scaleFactor, scaleFactor);
CGAffineTransform rotateTrans = CGAffineTransformMakeRotation(angle * M_PI / 180);
boxView.transform = CGAffineTransformConcat(scaleTrans, rotateTrans);
angle = (angle == 180 ? 360 : 180);
scaleFactor = (scaleFactor == 2 ? 1 : 2);
boxView.center = location;
[UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)
但是当用户抬起他的手指时,我希望盒子继续运动(好像有动量).这就像苹果实施的橡皮筋滚动效果一样; 即使你离开滚动,屏幕也会滚动并慢慢停止.我该如何实现?