5

我可以通过这里的代码移动或动画我的 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 轴上旋转一样。但是让它看起来包含不止一个图像。

谢谢您的帮助。

4

1 回答 1

1

而不是更改frame动画块内部,而是更改transform. 变换可用于缩放、旋转和平移(移动)视图。您只能围绕 z 轴旋转,但这就是您所要求的。视图上的transform属性采用CGAffineTransform,如下所示:

// rotate pi/2 degrees clockwise
carousel.transform = CGAffineTransformMakeRotation(M_PI_2);

如果你需要做更高级的变换,比如绕另一个轴旋转,那么你需要使用一点核心动画并设置视图层的变换属性(它需要 aCATransform3D而不是 a CGAffineTransform)。

与所有核心动画代码一样,您需要导入 QuartzCore.framework 并在代码中包含 QuartzCore/QuartzCore.h。

您正在做的上述动画是 UIView 动画,它们仅用于动画视图,但您要求的动画需要视图层的更高级动画。我建议您查看 CABasicAnimation 的文档并查看 iOS 的核心动画编程指南以了解更多信息。

您可以像这样为视图层的 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 轴旋转视图,但如果没有透视,看起来会很傻(搜索“透视核心动画”,之前有人问过)。可能需要进行很多调整才能获得正确的外观,但这应该足以让您入门。

于 2012-07-10T05:56:06.930 回答