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

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

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

1 Ответ

0 голосов
/ 08 декабря 2015

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

Все, что было сделано, было установить ОБА UIImageView и UIScrollView в «Подгонка по размеру», и это решило проблему для меня. Это может быть функция Xcode 7, но она работает.

...