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か。ただし、1 つの画像またはビューしか含まれていません。z軸で回転するように。ただし、複数の画像が含まれているように見せてください。

助けてくれてありがとう。

4

1 に答える 1

1

frameアニメーション ブロック内のを変更する代わりに、を変更しtransformます。変換を使用して、ビューのスケーリング、回転、平行移動 (移動) を行うことができます。z軸を中心にしか回転できませんが、それはあなたが求めたものです。ビューのtransformプロパティは、次のCGAffineTransformように取得します。

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

別の軸を中心に回転するなど、より高度な変換を行う必要がある場合は、コア アニメーションを少し使用して、ビュー レイヤーの変換プロパティを設定する必要があります ( の代わりCATransform3Dに を使用しますCGAffineTransform)。

すべての Core Animation コードと同様に、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 軸を中心にビューを回転させますが、遠近法がないと非常にばかげて見えます (SO で「パースペクティブ コア アニメーション」を検索してください。以前に尋ねられました)。正しい外観を得るにはおそらく多くの調整が必要ですが、これで十分です。

于 2012-07-10T05:56:06.930 に答える