Подтвердить что ты не робот

Правильное масштабирование UIScrollView, которое содержит много подзонов

Я создал масштабируемый UIScrollView и добавил к нему 100 подпрограмм (черепичный). Вид прокручивается влево и вправо. Тем не менее, я хотел бы разрешить масштабирование.

Чтобы сделать это, я прочитал, что моему делегату необходимо реализовать:

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

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

Я попытался создать еще один UIView и добавить к нему 100 подпрограмм. И затем верните это одно представление о методе выше, но я не работаю (он масштабируется, но как только он останавливается, он больше не взаимодействует).

4b9b3361

Ответ 1

Точно,

Это то, что Apple также упоминает в Руководство по программированию прокрутки:

Просто создайте представление, добавьте все подзоны в это представление и добавьте вновь созданный вид в виде одного поднабора в прокрутку...

Затем в методе делегата viewForZoomingInScrollView возвратите объект в Index 0:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
    return [self.scrollView.subviews objectAtIndex:0];
}

Ответ 2

Я создал представление, где я добавил все, используя:

UIView *zoomableView = [[UIView alloc] init];

без установки его рамки.

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

Ответ 3

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

Пример: если вы добавляете представление изображения для просмотра прокрутки, пишите

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