Правильное масштабирование UIScrollView, который содержит много подпредставлений - PullRequest
19 голосов
/ 03 декабря 2009

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

Для этого я прочитал, что мой делегат должен реализовать:

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

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

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

Ответы [ 3 ]

43 голосов
/ 09 апреля 2010

Совершенно верно,

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

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

Затем в методе делегата viewForZoomingInScrollView вернуть объект с индексом 0:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
    return [self.scrollView.subviews objectAtIndex:0];
}
2 голосов
/ 03 декабря 2009

Я создал вид, в который все добавил, используя:

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

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

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

0 голосов
/ 04 декабря 2012

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

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

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
return imageView object;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...