UIScrollView - проблемы с масштабированием (обрезает нижнюю часть UIView внутри UIScrollView после любого масштабирования)

Итак, небольшое объяснение того, что делает мое представление перед проблемой, страница загружает кучу кнопок, которые можно щелкнуть в contentView, который является подвидом моего scrollView.

У меня есть UIViewController, внутри у меня есть UIScrollView scrollView для обработки прокрутки и масштабирования UIView contentView, в который я добавляю все UIButtons.

Хорошо, я попытаюсь ввести только тот код, который, по моему мнению, может потребоваться изменить.

в viewDidLoad

scrollView.contentSize = CGSizeMake(320, (20+totalRows*OFFSET_Y) );
[scrollView setMaximumZoomScale:4];
[scrollView setMinimumZoomScale:1];
[scrollView setDelegate:self];

[contentView setFrame:CGRectMake(0, 0, 320, (20+totalRows*OFFSET_Y) )];

[self.scrollView addSubview:contentView];

Выполняя некоторые вычисления, чтобы увидеть, насколько большим мне нужен размер содержимого, чтобы он соответствовал всем кнопкам, я добавляю contentView как subView в свой scrollView. Затем я добавляю все UIButtons в качестве подпредставления моего contentView.

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return [self contentView];
}

Получил мой метод делегата для увеличения, возвращающего contentView.

Хорошо, так что все прокручивается и масштабируется, как и должно быть ... все мои UIButtons по-прежнему доступны для кликов и работают так, как должны.

Проблема в том, что после того, как я увеличиваю / уменьшаю масштаб, когда я прокручиваю до конца своего scrollView, он обрезается снизу, поэтому последний ряд кнопок разрезается пополам. даже когда я увеличиваю масштаб до 1: 1, он все равно обрезается.

У меня в приложении есть NavigationController размером 44 пикселя, не уверен, что это что-то напортачило.

Я проверял contentSize для scrollView и contentView, и до того, как было выполнено какое-либо масштабирование, высота моего scrollView на 44 пикселя больше, чем contentView, но после любого масштабирования соотношение составляет 1: 1, и это, похоже, является проблемой. Однако я не меняю размер нигде в коде.

Любая помощь приветствуется! Спасибо


Как я и думал, прежде чем добавить этот фрагмент кода

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale (float)scale
{    
    self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, self.scrollView.contentSize.height + (44 * scale));
}

А теперь Zooming ничего не обрезает и вроде работает корректно.

Я до сих пор не верю, что это то, что мне нужно делать, но я думаю, что пока это работает.

Все еще надеюсь, что у кого-то есть лучший ответ!


Поиграв больше с моим приложением, я понял, что масштабирование никогда не было проблемой. Фактическая проблема была с моим UIView * contentView. После изменения цвета фона моего scrollView и моего contentView (до двух очень разных цветов) я заметил, что мой contentView недостаточно длинный, чтобы покрыть все кнопки.

Итак, при первой загрузке scrollView был достаточно большим, чтобы видеть все, но как только вы увеличиваете масштаб и принимает размер contentView, он не настраивается должным образом!

Все, что можно сказать, наконец-то работает так, как должно! .. хаха нет ответов, но, надеюсь, кто-то сочтет это полезным! Лучшим советом было изменить цвет фона.


person rob1302    schedule 20.11.2011    source источник


Ответы (1)


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

Все, что было сделано, было установлено ОБЕИМ UIImageView и UIScrollView на «Aspect Fit», и это устранило проблему для меня. Это может быть функция Xcode 7, но она работает.

person David Sanford    schedule 08.12.2015