Правильное масштабирование UIScrollView, которое содержит много подзонов
Я создал масштабируемый UIScrollView и добавил к нему 100 подпрограмм (черепичный). Вид прокручивается влево и вправо. Тем не менее, я хотел бы разрешить масштабирование.
Чтобы сделать это, я прочитал, что моему делегату необходимо реализовать:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return ???;
}
Я видел примеры, которые имеют только одно подвью для масштабирования, поэтому они возвращают это подвью в этом методе. В моем случае, однако, у меня намного больше. Каков правильный способ масштабирования?
Я попытался создать еще один UIView и добавить к нему 100 подпрограмм. И затем верните это одно представление о методе выше, но я не работаю (он масштабируется, но как только он останавливается, он больше не взаимодействует).
Ответы
Ответ 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;
}