Я работаю над iPhone-приложением, которое будет отображать большую прокручиваемую и масштабируемую поверхность, содержащую сетку изображений и текстовых надписей над ними. Мне нужно иметь возможность изменять положение изображений по отдельности и контролировать уровень прозрачности меток. Я попытался выполнить эти цели, используя UIScrollView
и Core Animation.Плавная прокрутка UIScrollView с прозрачными CALayers
Подраздел UIScrollView
содержит два основных подслоя: один для отображения изображений и один для этикеток. Фотографии CALayers
с их содержимым, установленным на CGImage
, и они добавляются в качестве подслоев к слою изображений. Ярлыки: CATextLayers
, и они являются подслоями второго слоя. Прозрачность слоя этикеток изменяется в зависимости от масштаба масштабирования вида прокрутки.
И вот проблема: все работает отлично, когда этикетки полностью непрозрачные или полностью прозрачные, но когда они полупрозрачен скроллинг начинает быть вялеными и FPS падает до 35. Очевидно смешиванием этих слоев замедляет все , но я не мог найти способ исправить это. Буду признателен за любые идеи о том, как улучшить производительность в этой ситуации. Может быть, есть лучший способ рисовать текстовые метки, чем использоватьCATextLayer
?
Я сохраняю метки на отдельном слое, чтобы сразу настроить каждую из них. Но я попытаюсь добавить изображения непосредственно на слой подсмотра scrollview и посмотреть, помогает ли это, спасибо за советы. –
А, я вижу. В конце концов, это сводится к попыткам разных вещей, потому что проблемы с производительностью всегда ситуативны. Тем не менее, я бы предположил, что Objective C fast enumeration + настройка альфа индивидуально быстрее, чем наличие слоя в контейнере и изменение непрозрачности (у вас будет один слой для смешивания).В любом случае, дайте мне знать, если у вас есть другие вопросы. –