不能再翻转层,CALayer,CATransform3DRotate。

我想要做的是做:

  1. 点击一个button来做垂直翻转。
  2. 再次点击一个button,图层将会翻转,等等…

代码如下:

@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); else transfrom = CATransform3DRotate(transfrom, degToRad(-180.0), 1, 0, 0); plane.transform = transfrom; } 

然而,在第一步,我可以看到图层翻转180度,当我再次点击button,没有任何事情发生。

我错过了中间的东西吗? 请帮忙。

下面的代码只能获得发送者的select状态。 而国家只设置一次。 检查下面修改的代码。

 // Have a global variable BOOL isClicked - (IBAction)click:(id)sender { CATransform3D transfrom = CATransform3DIdentity; transfrom.m34 = -1.0/ 500; if ( !isClicked ) { transfrom = CATransform3DRotate(transfrom, degToRad(180.0), 1, 0, 0); isClicked = true; } else{ transfrom = CATransform3DRotate(transfrom, degToRad(360.0), 1, 0, 0); // OR CAN ALSO BE 0 isClicked = false; } plane.transform = transfrom; }