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