我正在使用NIPagingScrollView
在iPhone上显示多个页面。
每当我轻弹到某个页面时,下一页也会预先加载,这很好。
当我旋转 iPhone从纵向模式到横向模式时,我让layoutSubviews
在我的NIPageView
子类中进行重新布局。 NIPagingScrollView
设置为自动拉伸宽度和高度以保持全屏。这适用于当前页面。
但是,当我点击下一页时,布局会被破坏,因为之前已预取,并且还会自动调用layoutSubviews
进行布局。
我猜原点在旋转的下一页上没有更新,或类似的东西。
是否有人暗示如何避免此问题(除了不使用Landscape)?这是Nimbus的一个错误吗?
编辑:我发现NIPagingScrollView
提供了应由视图控制器调用的方法willRotateToInterfaceOrientation:duration:
和willAnimateRotationToInterfaceOrientation:duration:
。我实现了这些调用,但它仍然无济于事。
答案 0 :(得分:0)
确实NIPagingScrollView
提供了这些方法,但是如果你看一下它们,你会看到布局计算是基于scrollview框架值的。
因此,如果您希望将正确的值赋予分页滚动视图,例如,分页滚动视图的框架或主视图(控制器视图)(示例中为_scrollView)。
这样,就在动画之前,您的分页滚动视图将具有正确的等待帧,您的布局将被正确重新计算。
- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation
duration: (NSTimeInterval)duration {
// Your missing line of code to set the scroll view frame values
[self->_scrollView setFrame:self.view.bounds];
[self->_scrollView willAnimateRotationToInterfaceOrientation: toInterfaceOrientation
duration: duration];
[super willAnimateRotationToInterfaceOrientation: toInterfaceOrientation
duration: duration];
}