我正在运行此代码......
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
CGAffineTransform settingsTransform = CGAffineTransformMakeTranslation(self.settingsView.frame.size.width, 0);
CGAffineTransform speedTransform = CGAffineTransformMakeTranslation(-self.speedView.frame.size.width, 0);
self.settingsView.transform = settingsTransform;
self.speedView.transform = speedTransform;
} completion:nil];
Run Code Online (Sandbox Code Playgroud)
但是当它运行时,视图会在相反方向上跳转一半,然后在正确的方向上滑动到半个位置.
我已经将动画持续时间减慢到5秒,但是初始跳跃是瞬时的,一半的转换是错误的方向.
当我使用此代码动画回来时......
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.settingsView.transform = CGAffineTransformIdentity;
self.speedView.transform = CGAffineTransformIdentity;
} completion:nil];
Run Code Online (Sandbox Code Playgroud)
它完全一样.
结果是最终运动是所需变换的一半,因为它首先在错误的方向上跳过一半变换.
我真的无法理解为什么会这样?
有任何想法吗.
::编辑::
清除一些可能的歧义.
我并不是试图将这些观点"反弹"回到原来的位置.我正在制作动画的视图就像屏幕边缘的控制面板.当用户按下"go"时,视图会滑出.当用户按下"停止"时,面板滑回视图.
至少他们习惯了.由于启用了自动布局(我需要应用程序的其他部分),我不能只改变视图的框架,所以我去了转换路径.
您可以通过将视图粘贴到视图控制器和运行动画的按钮来查看此效果.
谢谢
每当我运行我的精灵工具包应用程序时,都会不断记录此错误.这使得调试变得非常困难,因为日志中充满了这些消息.它们似乎不会影响应用程序的运行方式,因此简单地抑制错误就足够了.任何人都知道如何解决这个问题?
每当我加载我的SpriteKit应用程序时,它都会记录此错误:<CAMetalLayer: 0x15f57fa70>: calling -display has no effect.并且它无法正确显示许多对象.我尝试重新创建场景并删除我的代码,两者都没有做任何事情.有一段时间我认为这可能是新的Xcode 7和iOS 9测试版的一个错误,但现在我已经尝试了两者的GM版本并且问题仍然存在,可能情况并非如此.
我的应用程序涉及用户能够拖动特定项目,如音量滑块和UIImage视图.我的目标是能够保存项目的位置,以便用户在重新启动后不必再次拖动项目.不幸的是,我看到了"保存CGRect rect = item.frame到NSuserDefaults或NSKeyedArchiver"路线的错误.还有其他建议吗?
我不断收到一条警告信息,说"由于输入纹理尺寸,将'animation.atlas'拆分为3个纹理地图集." 它似乎没有任何负面影响,但我想知道我是否需要修复它,如果我这样做,我该怎么做呢?我猜我的纹理太大了,这就是造成警告的原因.