UIImage заикаться при первой загрузке - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть UIScrollview, который увеличивает и уменьшает изображение PNG двойным касанием.Таким образом, я создаю несколько изображений PNG нескольких размеров, используя UIGraphicsBeginImageContext / UIGraphicsEndImageContext, и сохраняю все UIImages в NSMutableArray.Затем я показываю правильное изображение на экране, меняя изображение UIImageView на правильный UIImage, основываясь на текущем уровне масштабирования (я делаю все это, чтобы всегда показывать хорошо сглаженное изображение, а не масштабировать только исходное изображение).

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

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

1 Ответ

1 голос
/ 13 апреля 2011

На самом деле вам не нужно создавать разные размеры PNG.То, что у вас должно быть, - это UIImageView внутри прокрутки с исходным PNG в качестве изображения.Затем добавьте это в свой файл .m (убедитесь, что он есть в вашем заголовочном файле.

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return theImageView; }

, вы также можете установить максимальный и минимальный масштаб масштабирования, выполнив это:

[scrollview setMinimumZoomScale:0.5];//will be half size
[scrollview setMaximumZoomScale:3.0];//will be 3X

Выполнение вышеизложенного автоматически настроит масштабирование для вас. Затем вам нужно всего лишь написать код, чтобы прослушать двойное касание, и сказать ему сделать это:

[scrollview setZoomScale:1.0 animated:YES];//returns it back to original size

Надеюсь, этопомогает - дайте мне знать, если не эффект, который вы искали.

Ура,

Майкл

...