Итак, небольшое объяснение того, что делает мое представление перед проблемой, страница загружает кучу кнопок, которые можно щелкнуть в 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, он не настраивается должным образом!
Все, что можно сказать, наконец-то работает так, как должно! .. хаха нет ответов, но, надеюсь, кто-то сочтет это полезным! Лучшим советом было изменить цвет фона.