2

我正在使用一个NIPagingScrollView在 iPhone 上显示几个页面。

每次我翻到一个页面,下一页也被预先加载,这很好。

当我将 iPhone 从纵向模式旋转到横向模式时,我让layoutSubviews我在NIPageView. NIPagingScrollView设置为自动拉伸宽度和高度以保持全屏状态。这适用于当前页面。

但是当我翻到下一页时,布局被破坏了,因为它之前是预取的,并且还通过自动调用layoutSubviews.

我猜原点在下一页上没有更新,或者类似的东西。

有人提示我如何避免这个问题(除了不使用景观)?这是 Nimbus 中的错误吗?

编辑:我发现它NIPagingScrollView提供了方法willRotateToInterfaceOrientation:duration:并且willAnimateRotationToInterfaceOrientation:duration:应该由视图控制器调用。我实现了这些调用,但它仍然没有帮助。

4

1 回答 1

0

IndeedNIPagingScrollView提供了这些方法,但如果您查看它们,您会发现布局计算是基于滚动视图框架值的。

因此,如果您希望为分页滚动视图提供正确的值,例如,将框架或主视图(控制器视图)提供给分页滚动视图(示例中的 _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];

}
于 2012-02-19T19:14:53.807 回答