Использование предупреждения 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.