1
我正在将一个翻译应用到UILabel
,这会导致标签在它开始的x位置处结束,但由于某种原因它似乎处于左侧。CGAffineTransform动画没有以正确的位置结束
[UIView animateWithDuration:1 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{
NSLog(@"PLAYLABEL BEGIN X %f", self.playLabel.frame.origin.x);
self.playLabel.transform = CGAffineTransformMakeTranslation(-10, 0);
self.playLabel.transform = CGAffineTransformMakeTranslation(+20, 0);
self.playLabel.transform = CGAffineTransformMakeTranslation(-10, 0);
} completion:^(BOOL finished) {
NSLog(@"PLAYLABEL DONE X %f", self.playLabel.frame.origin.x);
}];
动画前标签的origin.x为119.500000,完成时origin.x为109.500000。我错了译文如何应用?如果我从原点变换-10,然后从其当前位置变换+20,那么标签应该只有原点的+10。因此,-10应该导致label.x成为它原来的位置。
我明白你在说什么。但是,动画的工作方式与我想要的完全相同(从左向右摆动)。标签向左移动10,向右移动20,但从原点结束-10。有什么更好的方法来完成这件事? – Brosef 2014-11-02 19:14:46
我宁愿使用uibezierpath:http://stackoverflow.com/questions/4538279/moving-an-object-along-a-curve-in-iphone-development你可以使用这段代码,但只是改变视图和点。 – 2014-11-02 19:20:17
使用贝塞尔路径,它是一个更好的解决方案。但如果你想要playlabel结束它的原始位置,将其转换为cgaffinetransformidentity – Nick 2014-11-02 19:25:10