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