4
我想在UIView類別上的這個代碼(在這裏回答中找到),並使用它來執行嵌套在UITableViewCell內的UIImageView的「流行」動畫。UIImageView正在消失後CAKeyframeAnimation
- (void)attachPopUpAnimation
{
CAKeyframeAnimation *animation = [CAKeyframeAnimation
animationWithKeyPath:@"transform"];
CATransform3D scale1 = CATransform3DMakeScale(0.5, 0.5, 1);
CATransform3D scale2 = CATransform3DMakeScale(1.2, 1.2, 1);
CATransform3D scale3 = CATransform3DMakeScale(0.9, 0.9, 1);
CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1);
NSArray *frameValues = [NSArray arrayWithObjects:
[NSValue valueWithCATransform3D:scale1],
[NSValue valueWithCATransform3D:scale2],
[NSValue valueWithCATransform3D:scale3],
[NSValue valueWithCATransform3D:scale4],
nil];
[animation setValues:frameValues];
NSArray *frameTimes = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.5],
[NSNumber numberWithFloat:0.9],
[NSNumber numberWithFloat:1.0],
nil];
[animation setKeyTimes:frameTimes];
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.duration = 0.2;
[self.layer addAnimation:animation forKey:@"popup"];
}
該動畫可以正常工作,但完成後會消失。我已經找到了解決這個問題的其他人的答案,但顯然在這種情況下設置fillMode不起作用。
這是排課嗎? '[[self layer] setTransform:[NSValue valueWithCATransform3D:scale4]];'拋出語法錯誤,說'沒有可行的從NSValue到CATransform3D的轉換'。當設置fromValue和toValue時,只能使用NSValue包裝? – Echelon 2015-04-17 10:14:03
確實。不知道如何不被忽視這麼久。謝謝。現在修復。 – 2015-04-18 17:09:21