作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在从硬编码布局转移到 Xcode 6 中可用的新通用 Storyboard系统。能够创建一个 Storyboard,通过自动布局的魔力,可以在两者上工作,这真是太棒了iPhone 和 iPad。我的理解是通用 Storyboard向后兼容 iOS 7。
但是,我在使用 popover segues 时遇到了问题。在 iOS 8 上,新的“Present as Popover”segue 将在 iPad 界面上显示为弹出窗口,在 iPhone 界面上显示为模态视图 Controller 。这正是我想要的行为,但是当我在 iOS 7 上运行我的通用 Storyboard时,每当我尝试 popover segue 时,应用程序都会崩溃。这是我收到的错误消息:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[UIPopoverController initWithContentViewController:] called when not
running under UIUserInterfaceIdiomPad.'
这有点烦人,因为我不想为每个 UI 惯用法求助于单独的 Storyboard。
看起来这些是我的选择:
UIStoryboardSegue
的子类,它将在 iPad 上显示弹出窗口,在 iPhone 上显示模态视图。这需要在我的应用程序中手动更改所有 popover segues 的类。这些都不是很好的选择,所以我想知道:我还有其他选择吗?我提出的解决方案是否遗漏了任何问题?
最佳答案
Xcode 6 支持统一的 Storyboard。 Storyboard可以根据显示 View Controller 的大小类添加或删除 View 和布局约束。您可以为多个大小类制作一个 Storyboard,而不是维护两个独立(但相似)的 Storyboard。
但是 Size 类是基于 iOS8 支持的 UITraitCollection。这就是它在 iOS7 上崩溃的原因。
关于ios - 如何在 iOS 7 上使用带有通用 Storyboard 的弹出窗口转场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221887/
我是一名优秀的程序员,十分优秀!