1

ここでの最初の投稿からの助けに感謝します。これにより、垂直方向の反転を行うことができ、コードは次のようになります

  @interface ViewController (){
        CALayer *plane;
    }
    @end

    @implementation ViewController

    -(void)viewDidLoad
    {
        [super viewDidLoad];

        [self addALayer];


    }
    - (void)addALayer{


        plane                   =   [CALayer layer];
        plane.backgroundColor   =   [[UIColor orangeColor] CGColor];
        //[plane insertSublayer:normalBackground atIndex:0];

        plane.opacity           =   1;
        plane.frame             =   CGRectMake(0, 0, 300, 100);
        plane.position          =   CGPointMake(250, 150);
        plane.anchorPoint       =   CGPointMake(0.5, 0.5);
        plane.borderColor       =   [UIColor whiteColor].CGColor;
        plane.borderWidth       =   3;
        plane.cornerRadius      =   10;
        [self.view.layer addSublayer:plane];

    }
- (IBAction)click:(id)sender {
    BOOL isClicked                  =   ((UIButton*)sender).selected;
    ((UIButton*)sender).selected    =   !((UIButton*)sender).selected;
    CATransform3D transfrom         =   CATransform3DIdentity;
    transfrom.m34                   =   -1.0/ 500;
    if ( !isClicked ) {
        transfrom                   =   CATransform3DRotate(transfrom, degToRad(180.0), 1, 0, 0);
        plane.transform             =   transfrom;
    }
    else 
        plane.transform                 =   transfrom;

}

私の質問は、アニメーションでこのフリップを行う方法です。使ってみました

UIView animateWithDuration(NSTimeInterval) delay:(NSTimeInterval) options:(UIViewAnimationOptions) animations:^(void)animations completion:(BOOL finished)completion

それでも機能しません。アニメーション ブロックがこのアニメーションに適しているかどうかはよくわかりません。

これについて何か考えはありますか。

4

1 に答える 1

1

a を使用しCATransactionて、暗黙のデフォルトを変更します

[CATransaction begin];
[CATransaction setAnimationDuration:1]; // in seconds

// Change layer animatable properties
plane.transform = transform;    

[CATransaction commit];
于 2013-04-09T14:38:18.077 に答える