2014-11-02 75 views
0

我有一个UIView,当检测到向上滑动时,在animateWithDuration块中向上移动。当检测到向下滑动时,相同的视图以相同的方式向下移动。当发生向下滑动并且向下移动动画完成时,我会调用另一种方法来动画从左向右摇动UILabel。这完全适用于我的iphone 5与ios7,但不适用于ios8。有人知道为什么我听说CGRectOffset不能与autolayout一起工作,但这并不能解释为什么我可以在ios7上运行而不是在ios8上运行。CGRectOffset动画不适用于ios8,但适用于ios7

-(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) { 

}]; 

回答

0

您应该只在UIView动画块中设置最终值frame。事实上,你在iOS 7中得到的结果是侥幸 - 你错误地使用了这个API。

它看起来像你希望这个标签在没有移动的地方反弹。您可以使用UIDynamics轻松实现此效果。 (这里有很多示例代码。)

如果您想对效果进行更细致的控制,请查看Core Animation的关键帧动画。

相关问题