• Swift - Как оптимизировать "нарезку" изображения?

    Flanker_4
    @Flanker_4
    Вы делаете не то и не в том месте.
    scrollViewDidScroll вызывается очень часто. При скролинге на 10 px он дернется 10 раз (ну почти, там своя специфика). А Вы еще и заливаете это соусом очередей, а уж если очередь асинхронная - то вообще шляпа , вы получите на те же 10 пикселей 10 операций генерации картинок

    Вам нужно либо взять эту большую картинку, обернуть в UIImageView , и вставить в uiscrollview как subview. Картинки высотой до 2к без проблем будут скролится.
    Если картинка ну чертовски большая, от 5к и больше - то тут нужно резать, но не так как Вы.
    Делаете две UIImageView определенного размера (ну к примеру 1.5x-2x высоты экрана девайса) и вставляете как выше как сабвью, когда пользователь доскраливает до половины этой картинки (это отслеживаете в didScroll) запускаете генерацию следующей порции картинки, вставляете ее в uiimageview и пихаете под первую. Когда пользователь доскролит - картинка догенерируется и для пользователя это будет выглядить безшовно. Если пользователь начинает скролить дальше - выдираете первый imageView , перегенирируете ему изображение и вставляете ниже . Вообщем две плиточки перекладываете по ходу скрола пользователя.
    Ответ написан
    Комментировать
  • Swift - Как оптимизировать "нарезку" изображения?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Операции с контекстами довольно затратные. Первое что приходит в голову, это
    1) отрендерить картинку один раз максимального размера, и добавить её UIImageView в скрол прижав к границам.
    2) если скорость скрола текста и картинки должны быть различными, то добавить ещё один ScrollView за текущий, с картинкой и ручками его двигать.

    Просто забавный факт: пробовал открыть на iPad3 в галерее картинку 40к пикселей на 40к, скролл был совершенно не плавный :)
    Ответ написан
    Комментировать