У меня есть подпредставление внутри uiscrollview. Затем я уменьшаю масштаб. Таким образом, он становится больше и позволяет мне прокручивать его.

Так что же здесь на самом деле меняется? ContentSize из UIScrollView?

1
wolverine 8 Мар 2010 в 14:58

2 ответа

Лучший ответ

Если вы не реагируете вручную на изменения масштаба масштабирования (как я описываю в этот ответ), представление, которое вы возвращаете из метода делегата -viewForZoomingInScrollView:, просто имеет масштабирующее преобразование, примененное к нему с помощью UIScrollView. Размер кадра вида не меняется, он просто графически трансформируется (вот почему вы видите размытость при более высоких коэффициентах масштабирования).

1
Community 23 Май 2017 в 15:26
Хорошо я понял. Я понимаю, почему даже после вызова drawrect контент не обновляется для подпредставления и остается размытым, как и раньше. Можете ли вы предложить способ, которым я смогу настроить свой контент до этого нового увеличенного размера?
 – 
wolverine
9 Мар 2010 в 08:08
1
@wolverine: если вы посмотрите ответ, на который я ссылаюсь выше, я описываю процесс реагирования на изменения коэффициента масштабирования в UIScrollView. Вам нужно будет перерисовать свое представление в конце операции масштабирования, изменив фрейм, вызвав -setNeedsDisplay или выполнив какой-либо другой пользовательский рисунок Quartz в вашем представлении.
 – 
Brad Larson
9 Мар 2010 в 20:31

Размер содержимого прокрутки логически остается прежним. Если вы проверите рамку прокрутки, она останется прежней.

Я думаю, что все, что меняется, - это масштабирование CGLayers. Когда вы увеличиваете масштаб, он сжимает рамку области отсечения, но затем масштабирует преобразование CGLayer вверх. Другими словами, все логические элементы все еще присутствуют, это просто выбор рисования и отображения другой его части.

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

0
TechZen 8 Мар 2010 в 18:16