Использование предупреждения CATransformLayer: изменение непрозрачного свойства в слое только для преобразования не будет иметь никакого эффекта

Я создалTransformViewподкласс UIView для того, чтобы поддержать двухсторонний вид, который я использую в флип-анимации. Это было предложено в других сообщениях, например:

Как вращать плоский объект вокруг его центра в перспективе?

@interface TransformView : UIView
@end

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

Все работает нормально, но я получаю предупреждение каждый раз, когда создаю объект TransformView, используя:

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

Предупреждение говорит:

- изменение свойства, непрозрачного в слое только для преобразования, не будет иметь никакого эффекта

Я думаю, UIView класс инициализирует непрозрачное свойство, которое обычно хорошо для CALayer но не CATransformLayer,

Код подклассов довольно хитрый? Если да, то как еще можно создать двухсторонний вид для флип-анимации?

Есть идеи, как остановить предупреждение?

У меня есть подозрение, что создание TransformView из файла пера, а не initWithFrame избегает предупреждения, но кажется глупым делать это просто, чтобы избежать предупреждения.

1 ответ

Решение

Вы можете избежать предупреждения, добавив это расширение в ваш код:

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

Конечно, это также остановит предупреждение о ваших собственных ошибочных попытках установить непрозрачное свойство CATransformLayer.

Другие вопросы по тегам