我可以通过此代码在此处移动或动画我的UIView:
- (void) makeAnim1{
//downward animation
[UIView animateWithDuration:1.5
delay:0.15
options: UIViewAnimationCurveLinear
animations:^{
carousel.frame = CGRectOffset(carousel.frame, 0, 650);
}
completion:^(BOOL finished){ //task after an animation ends
[self performSelector:@selector(makeAnim1_1) withObject:nil afterDelay:2.0];
NSLog(@"Done!");
}];
}
- (void) makeAnim1_1{
//upward animation
[UIView animateWithDuration:1.5
delay:0.1
options: UIViewAnimationCurveLinear
animations:^{
carousel.frame = CGRectOffset(carousel.frame, 0, -650);
}
completion:^(BOOL finished){
NSLog(@"Done!");
}];
}
但它只会向上和向下移动UIView
。如何使其像Slot machine
一样旋转,但只包含一个图像或视图。像在z轴上旋转一样。但要让它看起来像包含多个图像。
感谢您的帮助。
答案 0 :(得分:1)
您可以更改frame
,而不是更改动画块中的transform
。变换可用于缩放,旋转和平移(移动)视图。您只能围绕z轴旋转,但这就是您要求的。视图上的transform
属性采用CGAffineTransform
,如下所示:
// rotate pi/2 degrees clockwise
carousel.transform = CGAffineTransformMakeRotation(M_PI_2);
如果你需要做更高级的变换,比如围绕另一个轴旋转那么你需要使用一点Core Animation并设置views层的transform属性(它需要一个{ {1}}而不是CATransform3D
)。
与所有Core Animation代码一样,您需要导入QuartzCore.framework并在代码中包含QuartzCore / QuartzCore.h。
您正在进行的上述动画是UIView动画,这些动画仅用于为视图设置动画,但您要求的动画需要更高级的视图层动画。我建议您查看CABasicAnimation的文档,还可以查看iOS核心动画编程指南以了解更多信息。
您可以为视图图层的x旋转设置动画,如下所示:
CGAffineTransform
上面的代码确实会围绕x轴旋转视图,但是在没有透视的情况下看起来会非常愚蠢(搜索SO的“透视核心动画”,之前已经被问过)。可能需要进行大量调整以获得正确的外观,但这应该足以让您入门。