我有一个适用于iPad的Split View控制器,它应该支持两种方向(纵向和横向).
问题是,当我更改设备的方向时,细节视图不会重新调整以使用整个空间,并且会出现灰色方块.
我不认为这是约束的问题,因为这只有在我旋转时才会发生:
当我以纵向模式启动应用程序时,布局加载良好.
当我以横向模式启动应用程序时,布局加载良好.
在SplitViewController(以及DetailsController)中我尝试了这段代码:
在viewDidLoad中:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)
然后:
override func shouldAutorotate() -> Bool { print("should rotate --> true") return true } override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { print("we support all orientations") return UIInterfaceOrientationMask.All } override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { print("preferred orientation for presentation is landscape") return UIInterfaceOrientation.LandscapeLeft } func rotated(){ print("rotatiooooonn ------------") refreshIpad() detailSplitViewController.refreshUI() } func refreshIpad (){ dispatch_async(dispatch_get_main_queue(),{ self.view.setNeedsLayout() }) }
在日志中我得到了这个(所以每当方向发生变化时我都可以看到)
should rotate --> true we support all orientations rotatiooooonn ------------
以下是信息文件:
故事板:
细节视图中的约束: