Подтвердить что ты не робот

Iphone - Эффективность анимации очень плохая, когда тень просмотра включена

У меня есть UILabel с тэгом CALayer. И я просто перемещаю его через анимацию UIView.

Производительность плохой, и я вижу, что анимация не является гладкой вообще.

Я думаю, что тень UILabel вызывает проблему анимации, потому что, если я отключу тень, анимация станет такой же гладкой, как обычно.

Я пробовал использовать view.layer.shouldRasterize = YES;

Но все же есть производительность анимации.

Кто-нибудь может дать мне несколько советов?

Спасибо

4b9b3361

Ответ 1

Вы можете значительно повысить производительность тени CALayers, используя ее свойство shadowPath - это позволяет рисовать тень, не переучитывая альфа-маску слоя. Для прямоугольного представления вы используете его следующим образом:

theView.layer.shadowPath = [UIBezierPath bezierPathWithRect:theView.bounds].CGPath;

или, если его углы округлены,

theView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:theView.bounds cornerRadius:theView.layer.cornerRadius].CGPath;

Обратите внимание, что это тень вокруг границ представлений - если вам нужна более высокая производительность в тени на самом тексте, вам либо нужно использовать свойства text-shadow меток (которые жертвуют тонкостями теней CALayer, например, размыванием, для лучшей скорости рендеринга) или - гораздо более сложный вариант - создайте CGPathRef для использования в качестве слоев shadowPath из самих текстовых символов.

Ответ 2

Не уверен, что это ответ, который вы ищете, но я нашел это: Drop Shadow в тексте UITextField

Это может быть лучше, я не пробовал, но, похоже, это будет.