首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPad上的UITraitCollection和UISplitViewController

iPad上的UITraitCollection和UISplitViewController
EN

Stack Overflow用户
提问于 2016-01-01 14:55:06
回答 1查看 903关注 0票数 3

我正在设计一个使用UISplitViewController的iPad应用程序。我已经对UISplitViewController进行了配置,以便通过splitViewController.preferredDisplayMode = .AllVisible始终可以看到主视图控制器(即左侧较薄的视图)。

细节视图控制器是一个UICollectionView,我想根据iPad是纵向还是横向来更改它的显示方式。如果它是纵向的,我将使集合视图只显示一列(类似于UITableView)。如果它是横向的,有更多的水平屏幕可用空间,那么我将显示多列。我想我可以在实现数据源和集合视图委托的类中使用几个条件来实现这一点。

我不想只检查设备的方向,因为我更喜欢使用大小类和特征,这样应用程序也可以在iPhone上工作,等等(当遇到相同的特征时)。

我知道每个视图控制器都有一个traitCollection属性,但是不管iPad的初始方向如何,当我在viewDidAppear方法中打印出这个属性时,它总是说视图控制器是_UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular

如果iPad是纵向的,我会想到这一点,但即使它最初是横向的,这也是打印出来的-尽管我希望水平和垂直大小的类的方向是RegularRegular

另外,如果我在视图控制器中实现traitCollectionDidChange:方法,它在旋转时永远不会被调用,或者即使点击细节视图控制器上的展开按钮来隐藏主视图控制器(并使细节视图控制器全屏显示)。

那么,我的问题是,我如何在拆分视图controller...or中检测视图控制器中的大小、类别/特征的变化?我这样做完全错了吗?

对于响应中的任何示例代码,该应用程序都是用Swift针对iOS 9编写的。

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-06-30 14:54:26

也许您可以尝试使用以下方法检查self.splitViewControllertraitCollection

代码语言:javascript
复制
private var isCompactOrientation: Bool {
    get {
        return self.splitViewController?.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClass.Compact
    }
}

如果使用self.traitCollection.horizontalSizeClass,它总是返回.Compact

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34554202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档