像核心animation老虎机一样在Z轴上旋转
我是能够移动或animation我的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轴上旋转一样。 但是让它看起来像它包含多个图像。
谢谢您的帮助。
而不是更改animation块内的frame
而是更改transform
。 该变换可用于缩放,旋转和平移(移动)视图。 你只能围绕Z轴旋转,但这是你所要求的。 视图上的transform
属性需要一个CGAffineTransform
,像这样:
// rotate pi/2 degrees clockwise carousel.transform = CGAffineTransformMakeRotation(M_PI_2);
如果您需要进行更高级的转换(例如围绕另一个轴转动),则需要使用一点点核心animation,并设置视图图层(使用CATransform3D
而不是CGAffineTransform
)的transform属性。
和所有的核心animation代码一样,你需要导入QuartzCore.framework,并在你的代码中包含QuartzCore / QuartzCore.h。
你正在做的上述animation是UIViewanimation只是为了animation视图,但你要求的animation需要更高级的视图层的animation。 我build议你看一下CABasicAnimation的文档,也可以看一下iOS的Core Animation Programming Guide来学习更多。
你可以像这样animation一个视图层的x旋转:
CABasicAnimation *slotAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; [slotAnimation setToValue:[NSNumber numberWithFloat:M_PI_2]]; // animation customizations like duration and timing // that you can read about in the documentation [[carousel layer] addAnimation:slotAnimation forKey:@"mySlotAnimation"];
上面的代码确实会围绕X轴旋转视图,但是在没有透视的情况下会看起来非常愚蠢(searchSO为“透视核心animation”,之前已经询问过)。 可能有很多调整来获得正确的外观,但这应该足以让你开始。