iOS5:UIScrollView的显示和滚动与iOS4不同

时间:2011-11-16 01:10:39

标签: ios xcode cocoa-touch uiview ios5

这很奇怪。

我有一个IBOutlet UIScrollView playScrollView,它的高度恰好是它的contentSize高度的1/3。该应用程序是在景观中。我叫这段代码......

[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太低,当显示中间时显示底页。我可以通过将page更改为(page-1)来获取适用于iOS5(设备和模拟器)的代码...

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

...但当然这会破坏iOS4,它可以很好地处理旧代码,但是使用这个新代码也会卡住一个page high 。 iOS4和iOS5正好是PLAY_VIEW_PAGE_HEIGHT失步(288像素,是playScrollView高度的三分之一)。如果我改用setContentOffset:,也会发生同样的事情。

另一个奇怪的事情,可能是关键。如果我根本不做scrollRectToVisible,则iOS4位于playScrollView的顶部,而iOS5显示中间的三分之一(即PLAY_VIEW_PAGE_HEIGHT像素向下)。

可以检测iOS并为每个使用不同的代码,但这是一个可怕的kludge。如果它是一个iOS5错误并且他们在将来的版本中修复它,那将破坏实时应用程序。

有没有人有任何想法,或注意到类似的东西?感谢。

0 个答案:

没有答案