Хорошо, я думаю, что пришло время сделать официальное место в Интернете для этой проблемы: Как сделать UIScrollView
фотопросмотр с пейджингом и масштабированием. Добро пожаловать, мои собратья UIScrollView
хакеры.
У меня есть UIScrollView
с включенной подкачкой, и я отображаю UIImageViews
как встроенное приложение для фотографий. (Это звучит знакомо?)
Я нашел следующий проект на github:
http://wiki.github.com/andreyvit/ScrollingMadness
Показывает, как реализовать масштабирование в режиме прокрутки, когда включена подкачка. Если кто-то еще попробует это, мне фактически пришлось удалить подкласс UIScrollView
и использовать собственный класс, иначе он не будет работать. Я думаю, что это из-за изменений в 3.0 SDK, связанных с тем, как представление прокрутки перехватывает события касания.
Таким образом, идея состоит в том, чтобы удалить все другие виды, когда вы начинаете масштабирование, и переместить текущий вид на (0, 0) в scrollview
, обновив contentsize
и т. Д. Затем, когда вы вернетесь к 1,0 Если он добавляет другие виды назад и возвращает все в порядок.
В любом случае, этот проект отлично работает в симуляторе, но на устройстве наблюдается какое-то неприятное движение вида, размер которого вы изменяете, похоже, что это вызвано тем, что мы меняем contentsize
/ offset
и т. Д. для представления изменяемого размера. Вы должны сделать этот вид движущимся, иначе вы можете перемещаться влево через пробел, оставленный другими видами.
Я нашел одну интересную заметку в «Известных проблемах» заметок о выпуске 3.0 SDK :
UIScrollView: после масштабирования вставка содержимого игнорируется, а содержимое остается в неправильном положении.
Этот вид звучит как то, что здесь происходит. После увеличения изображение сместится за пределы экрана, поскольку вы изменили смещение и т. Д.
Я уже потратил на это часы и замедляюсь, приходя к печальному осознанию того, что это просто не сработает.
Просмотрщик фотографий Three20 исключен: он слишком тяжелый, и в нем слишком много ненужного пользовательского интерфейса и другого поведения.
Кажется, что встроенное приложение Photo делает что-то волшебное. Если вы увеличиваете изображение и перемещаетесь к дальним краям, текущая фотография перемещается независимо от фотографии рядом с ней, а это не то, что вы получаете при попытке сделать это со стандартным UIScrollView
.
Я видел обсуждение о вложении UIScrollView
, но я действительно не хочу туда идти.
Кто-нибудь справился с этим со стандартным UIScrollView
(и работает в 2.2 и 3.0 SDK)? Мне не нравится, когда я использую свой собственный зум + отскок + панорамирование + код подкачки.