Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using CATransformLayer warning: changing property opaque in transform-only layer, will have no effect

I created a "TransformView" subclassing UIView in order to support a double-sided view which I am using in a flip animation. This has been suggested in other posts, eg:

How to rotate a flat object around its center in perspective view?

@interface TransformView : UIView
@end

@implementation TransformView
+ (Class)layerClass {
  return [CATransformLayer class];
}
@end

It all works fine, but I get a warning every time I create a TransformView object using:

TransformView *newTransformView=[[TransformView alloc] initWithFrame:frame];

The warning says:

- changing property opaque in transform-only layer, will have no effect

I guess the UIView class is initialising the opaque property which is usually fine for a CALayer but not a CATransformLayer.

Is the subclassing code quite dodgy? If so, how else can you create a 2-sided view for flip animations?

Any ideas for how to stop the warning?

I have a suspicion that creating a TransformView from a nib file rather than initWithFrame avoids the warning, but is seem cludgy to have to do this just to avoid the warning.

like image 459
Bbx Avatar asked Sep 09 '12 17:09

Bbx


1 Answers

Your can avoid the warning by adding this extension somewhere in your code:

@implementation CATransformLayer (MyExtension)
-(void)setOpaque:(BOOL)opaque
{
    return;
}
@end

Of course this will also stop the warning for your own mistaken attempts to set the opaque property of a CATransformLayer.

like image 63
pommy Avatar answered Oct 04 '22 09:10

pommy