Skip to content

Instantly share code, notes, and snippets.

@warpling
Created March 26, 2015 20:46
Show Gist options
  • Save warpling/672261ad0a15558ae8d8 to your computer and use it in GitHub Desktop.
Save warpling/672261ad0a15558ae8d8 to your computer and use it in GitHub Desktop.
CATransformLayer Opacity Problem
- (void)viewDidLoad {
[super viewDidLoad];
// Make TransformLayer
CATransformLayer *transformLayer = [CATransformLayer layer];
transformLayer.frame = self.view.bounds;
transformLayer.anchorPoint = CGPointMake(0, 0);
// Make red layer
CALayer *redLayer = [CALayer layer];
redLayer.bounds = transformLayer.bounds;
redLayer.backgroundColor = [UIColor redColor].CGColor;
// Make blue layer
CALayer *blueLayer = [CALayer layer];
blueLayer.bounds = transformLayer.bounds;
blueLayer.backgroundColor = [UIColor blueColor].CGColor;
// Push the red layer back a tiny bit so it's truly behind the blue layer
redLayer.transform = CATransform3DMakeTranslation(0, 0, -0.001);
// Flip the red layer around
redLayer.transform = CATransform3DRotate(redLayer.transform, M_PI, 0, 1, 0);
// Setting doubleSided to NO prevents the back color from bleeding through when transformLayer's opacity is adjusted
redLayer.doubleSided = NO;
blueLayer.doubleSided = NO;
[transformLayer addSublayer:redLayer];
[transformLayer addSublayer:blueLayer];
[transformLayer setOpacity:0.5];
[self.view.layer addSublayer:transformLayer];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment