iOS5: UIScrollView отображает и прокручивает не так, как iOS4 - PullRequest
1 голос
/ 16 ноября 2011

Это любопытно.

У меня есть IBOutlet UIScrollView playScrollView, высота которого точно равна 1/3 его высоты contentSize. Приложение в ландшафте. Я называю этот код ...

[playScrollView scrollRectToVisible:CGRectMake(0.0f, page * PLAY_VIEW_PAGE_HEIGHT,
                                              480.0, PLAY_VIEW_PAGE_HEIGHT)
                           animated:animated];

... (int page колеблется от 0 до 2), чтобы начать с page 1 (с отображением средней трети), затем подниматься или опускаться по мере необходимости, когда пользователь нажимает кнопки.

Это прекрасно работает на iOS4 как на устройстве, так и на симуляторе, и уже несколько месяцев без проблем работает в магазине приложений. Даже устройства iOS5 в порядке с существующими сборками, только когда приложение было перекомпилировано для iOS5, оно перестало корректно работать на устройствах iOS5.

Начиная с обновления до XCode 4.2, это не работает для iOS5. Это на один page слишком низко, показывая нижнюю страницу, когда она должна показывать середину. Я могу заставить код работать на iOS5 (устройство и симулятор), изменив page на (page-1) ...

[playScrollView scrollRectToVisible:CGRectMake(0.0f, (page-1) * PLAY_VIEW_PAGE_HEIGHT,
                                              480.0, PLAY_VIEW_PAGE_HEIGHT)
                           animated:animated];

... но, конечно, это нарушает iOS4, который прекрасно работает со старым кодом, но застревает на один page слишком высокий с этим новым кодом. iOS4 и iOS5 ровно PLAY_VIEW_PAGE_HEIGHT вне шага (288 пикселей, треть высоты playScrollView). То же самое происходит, если я использую setContentOffset: вместо.

Еще одна любопытная вещь, вероятно, ключ к этому. Если я вообще не использую scrollRectToVisible, то iOS4 находится в верхней части playScrollView, тогда как iOS5 показывает среднюю треть (т.е. PLAY_VIEW_PAGE_HEIGHT пикселей вниз).

Я мог бы обнаруживать iOS и использовать разные коды для каждого, но это ужасная ошибка. Если это ошибка iOS5, и они исправят ее в будущем выпуске, это сломает живое приложение.

У кого-нибудь есть идеи, или замечено что-нибудь подобное? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...