6

我创建了一个“ TransformView”子类UIView以支持我在翻转动画中使用的双面视图。这已在其他帖子中提出,例如:

如何在透视图中围绕其中心旋转平面对象?

@interface TransformView : UIView
@end

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

一切正常,但每次我使用以下方法创建 TransformView 对象时都会收到警告:

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

警告说:

- 在仅变换层中更改属性不透明,将无效

我猜这个UIView类正在初始化 opaque 属性,这通常适用于 aCALayer但不是 a CATransformLayer

子类化代码很狡猾吗?如果是这样,您还能如何为翻转动画创建 2 面视图?

关于如何停止警告的任何想法?

我怀疑TransformView从 nib 文件创建一个而不是initWithFrame避免警告,但为了避免警告而不得不这样做似乎很笨拙。

4

1 回答 1

4

您可以通过在代码中的某处添加此扩展来避免警告:

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

当然,这也会停止警告您自己错误地尝试设置 CATransformLayer 的 opaque 属性。

于 2013-02-19T10:00:14.370 回答