Сохраняйте точно такое же положение увеличения при замене изображения с низким разрешением на высокое разрешение - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть UIScrollview, который пользователи могут увеличивать.Изображения очень большие (3 МБ +), поэтому сначала я загружаю версию с низким разрешением, а затем загружаю большую версию после завершения загрузки.

Без проблем, если только пользователь не увеличил масштаб.

Как сохранить точное увеличение при замене изображения с низким разрешением изображением с высоким разрешением?Я просто хочу, чтобы пользователь видел изображение более четким, но не изменил то, на что он смотрит.

Некоторые примеры размеров для руководства:

  • Изображение низкого разрешения: (222 200)со стандартным увеличением уровня (при двойном нажатии): 4,55 ...
  • Изображение с высоким разрешением: (1184,1067) со стандартным увеличением уровня: 0,854 ...
  • Обзор UIScrollСам по себе полноэкранный режим с AspectFit (414.0,672.0)

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

// Get the frame & zoom scale of image before replacing it
let tempZoomScale = pageImageViews[pageToUse].zoomScale
let tempFrame = pageImageViews[pageToUse].contentOffset

// Replace the image with the newly formatted one
pageImageViews[pageToUse].display(image: imageToUse)

// Set the same zoom position as it was before we swapped the image
if (maintainZoomPosition == true) {
    pageImageViews[pageToUse].zoomScale = tempZoomScale
    pageImageViews[pageToUse].contentOffset = tempFrame
}

Любые предложения приветствуются!

Спасибо

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Если вы помещаете изображения в UIImageView с его режимом содержимого, установленным на .scaleAspectFit, и этот вид изображения имеет установленный размер, то замена изображения одним из более высокого разрешения не должна вообще изменять уровень масштабирования.

0 голосов
/ 25 апреля 2018

Как сохранить точное увеличение при замене изображения с низким разрешением изображением с высоким разрешением?

Просто сделайте это - замените изображение с низким разрешением изображением с высоким разрешением. Но не заменяйте изображение view , содержащее изображение; кажется, это твоя ошибка здесь. Это равносильно вмешательству во весь механизм масштабирования представления прокрутки, что и вызывает ваши проблемы.

0 голосов
/ 24 апреля 2018

Работа, которую вы хотите сделать, не очень хороша с точки зрения производительности. Лучший способ - отображать прогрессивный вид до тех пор, пока не загрузится большое изображение, затем заменить изображение и удалить прогрессивный вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...