我正在我的应用中使用VFR PDF viewer library,因此我会在其中展示:
ReaderDocument *document = [ReaderDocument withDocumentFilePath:pdfFile password:nil];
ReaderViewController *vc = [[ReaderViewController alloc] initWithReaderDocument:document];
[self.navigationController pushViewController:vc animated:YES];
如果我在iOS7上运行,一切正常。
如果我在iOS8上运行我的应用程序,则不会调用ReaderViewController中的willRotateToInterfaceOrientation方法,因此在旋转设备时,文档无法正确重新格式化。
但是,如果我运行iOS8上的库附带的演示应用程序,那么ReaderViewController中的willRotateToInterfaceOrientation会被调用,这让我相信库是可以的,我做错了(或者忽略了做某事)在我的应用程序中。
我对这种行为感到很困惑。为什么不在我的iOS8应用程序中调用rpmRotateToInterfaceOrientation,但它在其他变体下呢?我怎样才能尝试追踪这个?
答案 0 :(得分:12)
我终于设法解决了我的问题;如果其他人遇到同样的问题,这就是问题所在。
我的ReaderViewController
是从已经实现viewWillTransitionToSize:withTransitionCoordinator:
的类中呈现的,因此不会调用子视图控制器上已弃用的方法。
同样在那个实现中,它没有调用
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]
因此,所有子视图控制器的viewWillTransitionToSize:withTransitionCoordinator:
方法也未被调用。
修复是添加对
的调用[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]
进入父VC的viewWillTransitionToSize:withTransitionCoordinator:
方法,子类ReaderViewController
,然后在我的子类中添加viewWillTransitionToSize:withTransitionCoordinator:
以调用ReaderViewController
中的相应方法。
答案 1 :(得分:3)
仅仅因为在iOS8中不再调用willRotateToInterfaceOrientation
,所以不推荐使用它。
如果没有实现新的旋转方法,那么项目就是 使用iOS 8 SDK编译时,视图控制器将无法接收 调用不推荐的轮换方法。
可以找到与您类似的问题here
引用@mluisbrown:
iOS 8 SDK中不推荐使用旋转方法。这将有 对使用iOS 7 SDK构建的应用程序完全没有影响,甚至在iOS中运行 8可能是iOS的未来几个版本。
我遇到了一些与你类似的问题。我尝试遵循Apple建议使用viewWillTransitionToSize
,在我的情况下,这并没有解决我的问题,因为这只会在从常规到紧凑的变化时被触发,例如不能轮换。
viewWillTransitionToSize:withTransitionCoordinator:make 基于界面的调整。
此外,WWDC 2014的视频解释了这一点,但我无法记住它是哪个视频。可能是What's new in Cocoa touch
上的那个或View Controller Advancements in iOS 8
上的那个。
修改强>
请注意,在我的情况下viewWillTransitionToSize
,如上所述,没有被调用,因为我没有从常规变为紧凑,所以没有大小过渡,严格来说对于Apple。
我设置的唯一解决方案是在相应的视图控制器的viewDidLayoutSubviews
中手动处理。
在我的情况下,我想跟踪自动布局的tableview中显示的顶部单元格。由于系统没有自动跟踪,我必须手动检查并在旋转时手动滚动到适当的单元格。这就是为什么我这样做的原因。它非常重#34;但在我的情况下工作。
如果有人有更简单的解决方案,我也会感兴趣。