这很奇怪。
我有一个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错误并且他们在将来的版本中修复它,那将破坏实时应用程序。
有没有人有任何想法,或注意到类似的东西?感谢。