作者:Gregory S. Combs,基于 GitHub 上的工作
这是一个 UISplitViewController 子类,当放置在 UITabBarController 中时,会智能旋转其内容。
通常情况下,标准的 UISplitViewController 在不属于最前端的 UI 元素(选中的标签)时不会听到旋转通知。这是因为苹果公司认为 UISplitViewController 应该是层次结构中最顶层的控制器。所以当您在切换分割视图的标签页之间时旋转设备,您的视图控制器和 UI 元素开始以不匹配的方向绘制。用户不喜欢这种愚蠢的行为。但如果您的应用 确实需要 在标签视图中使用分割视图怎么办?这样做。这就是您应该怎么做。
注意,正如我们提到的,该视图控制器层次结构与苹果的人机界面指南并不完全吻合,但我已经成功将一款应用以这种方式发布到 App Store(几乎完全一样),如TexLege所示。其他人也成功地使用 IntelligentSplitViewController 发布了应用,包括几家知名的开发公司。
该类和封装的演示应用假设您是通过 Interface Builder(在的故事板中)加载您的 tabBarController 和 splitViewControllers。如果您不喜欢使用故事板,那么希望您知道如何将此类纳入,而无需太多帮助。
我还包括了一个由 Ziophase 提供的替代实现演示/模板(作为子模块),IntelligentTemplate。
CocoaPods 是将 IntelligentSplitViewController 集成到项目中最容易的方法。
之后,您可以打开您的故事板、XIB 或源文件,并将您的 UISplitViewController 类更改为使用 IntelligentSplitViewController 子类。
确保根据需要设置您的分割视图代理(到 'detail' 视图控制器)。一如既往,查看 IntelSplitDemo 项目的额外提示和配置。
(8/6/14)
增加了 CocoaPods podspec 和安装说明。
(8/5/14)
重构以支持 iOS 7、故事板、ARC 等。
(6/16/11)
添加了来自Ziophase的更广泛模板,以帮助展示更高级的控件层次结构。
(5/23/11)
添加了演示应用,向您展示如何在应用中使用它。
改进了文档(略有改进)。
指出了一种不使用[super valueForKey:@"_barButtonItem"]
获取弹出按钮的备选方法,以防这让您感到恐惧或激怒App Store审查员。(目前它还没有证明有问题的)。
本作品受知识共享署名 4.0 国际许可协议的许可。
另请参阅包含的许可文件以获取有关此类适当使用的更多信息。