首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGRectOffset动画在ios8上不起作用,但在ios7上起作用

CGRectOffset动画在ios8上不起作用,但在ios7上起作用
EN

Stack Overflow用户
提问于 2014-11-03 06:24:06
回答 1查看 583关注 0票数 0

我有一个UIView,当检测到向上滑动时,它会通过animateWithDuration块中的CGRectOffset向上移动。当检测到向下滑动时,相同的视图以相同的方式向下移动。当向下滑动发生并且向下移动动画完成时,我调用另一个方法来使UILabel从左到右摇动。这在我的装有ios7的iPhone5上运行得很好,但在ios8上就不行了。有人知道为什么吗?我听说过CGRectOffset不能在autolayout上工作,但这并不能解释为什么我可以让它在ios7上工作,而不能在ios8上工作。

代码语言:javascript
复制
-(void) animatePlayLabel
{
    [UIView animateWithDuration:1 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{

    self.playLabel.frame = CGRectOffset(self.playLabel.frame, -10, 0);
    self.playLabel.frame = CGRectOffset(self.playLabel.frame, +20, 0);
    self.playLabel.frame = CGRectOffset(self.playLabel.frame, -20, 0);
    self.playLabel.frame = CGRectOffset(self.playLabel.frame, +20, 0);
    self.playLabel.frame = CGRectOffset(self.playLabel.frame, -20, 0);
    self.playLabel.frame = CGRectOffset(self.playLabel.frame, +20, 0);
    self.playLabel.frame = CGRectOffset(self.playLabel.frame, -10, 0);

    } completion:^(BOOL finished) {

}];
EN

回答 1

Stack Overflow用户

发布于 2014-11-03 06:50:55

您应该仅在UIView动画块内设置frame的最终值。你在iOS 7中得到你想要的结果是一个偶然的事实--你错误地使用了这个接口。

看起来你想让这个标签在原地不动地弹来弹去。您可以使用UIDynamics轻松实现此效果。(有很多示例代码。)

如果您希望对效果进行更细粒度的控制,请查看核心动画的关键帧动画。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26705148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档