Итак, небольшое объяснение того, что делает мой вид перед проблемой, страница загружает несколько кнопок, которые можно нажимать в contentView, который является подвидом моего scrollView.
У меня есть UIViewController, внутри у меня есть мой
UIScrollView scrollView для обработки прокрутки и масштабирования
UIView contentView, в который я добавляю все кнопки UIB.
Хорошо, я постараюсь поместить только тот код, который, как мне кажется, нужно изменить.
в 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.
Затем я добавляю все кнопки UIB как подпредставление моего contentView
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return [self contentView];
}
Получил мой метод делегата для масштабирования, возвращающий contentView.
Хорошо, все прокручиваемо и масштабируемо, как и должно быть ... все мои UIB-кнопки по-прежнему нажимаемы и работают так, как должны.
Проблема в том, что после увеличения / уменьшения масштаба, когда я прокручиваю до конца моего 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 (на 2 очень разных цвета) я заметил, что мой contentView не был достаточно длинным, чтобы покрыть все кнопки.
Таким образом, при первой загрузке scrollView был достаточно большим, чтобы видеть все, но как только вы увеличиваете масштаб, и он принимает размер contentView, он не корректируется должным образом!
Все это, наконец, работает так, как должно! .. хаха, нет ответов, но, надеюсь, кто-то найдет это полезным! Лучший совет - изменить цвета фона.