Несколько месяцев назад я нашел действительно потрясающий пример кода с сайта Apple.Образец называется LargeImageDownsizing. Замечательно, что он много объясняет о том, как изображение читается из ресурсов, а затем отображается на экране.
Копаясь в этом коде, я нашел кое-что, что меня немного беспокоит.Уменьшенное изображение передается в представление с CATiledLayer, но без предоставления фрагмента изображения на каждой плитке для повышения производительности памяти, он просто устанавливает размер плитки и затем загружает изображение (я упрощаю задачу, чтобы перейти к концепции).
Так что мой вопрос в основном заключается в том, почему? Зачем использовать CATiledLayer, если он не подается правильно, они могли бы использовать обычный UIImageView ...
Так что я сделал несколько тестов, чтобы понять, был ли я прав,Чтобы изменить код, просто добавьте представление прокрутки с представлением изображения в качестве подпредставления и откройте представление прокрутки делегата для увеличения.Я пришел к выводу, что тестирование на устройстве и симе:
- -Влияние памяти и занимаемая площадь абсолютно одинаковы даже при операции масштабирования, и меня это совсем не удивляет,изображение распаковано в памяти
- - профиль времени говорит, что просмотр мозаики занимает больше времени для рисования во время операции масштабирования с прокруткой вместо просмотра uiimage, и это меня совсем не удивляет, представление uiimage уже нарисовано
- -Если я отправляю предупреждение памяти, ничего не меняется между двумя решениями (только на sim)
- -Проверка производительности Core Animation Я получаю те же результаты около 60FPS
Так в чем же дело между этими двумя видами / слоями, почему я должен выбрать один вместо другого в этом конкретном случае?UIImageView, кажется, выиграл битву.
Я надеюсь, что кто-то может помочь мне понять это.