- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 UISplitViewController
设计一个 iPad 应用程序.我已经配置了 UISplitViewController
这样主视图 Controller (即左侧较细的 View )始终通过 splitViewController.preferredDisplayMode = .AllVisible
可见。 .
详细 View Controller 是一个 UICollectionView
我想根据 iPad 是纵向还是横向来更改它的显示方式。如果它是纵向的,我会让 Collection View 只显示一个列(类似于 UITableView
)。如果它是横向的,有更多可用的水平屏幕空间,那么我将显示多列。我认为我可以在类中使用一些条件语句来完成此操作,该类实现了该 Collection View 的数据源和委托(delegate)。
我不想只检查设备的方向,因为我更喜欢使用尺寸等级和特征,这样应用程序也可以在 iPhone 等设备上运行(当遇到相同的特征时)。
我知道每个 View Controller 都有一个 traitCollection
属性,但无论我在 viewDidAppear
中打印出此属性时 iPad 的初始方向如何方法它总是说 View Controller 是 _UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular
.
如果 iPad 是纵向的,我会期待这一点,但即使它最初是横向的,它也会被打印出来——尽管我希望方向是 Regular
和 Regular
对于水平和垂直尺寸等级。
此外,如果我实现 traitCollectionDidChange:
View Controller 中的方法它永远不会在旋转时调用,或者即使点击详细 View Controller 上的展开按钮以隐藏主视图 Controller (并为详细 View Controller 提供全屏)。
所以,我的问题是如何在 Split View Controller 中检测 View Controller 中的大小类/特征变化……或者我这样做完全错误吗?
为了响应中的任何示例代码,该应用程序是用针对 iOS 9 的 Swift 编写的。
在此先感谢您的帮助!
最佳答案
也许您可以尝试使用以下方法检查 self.splitViewController
的 traitCollection
:
private var isCompactOrientation: Bool {
get {
return self.splitViewController?.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClass.Compact
}
}
如果使用 self.traitCollection.horizontalSizeClass
,它总是返回 .Compact
。
关于ios - iPad 上的 UITraitCollection 和 UISplitViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34554202/
由于 iOS8 检测 UIViewController 方向的方法已被弃用。 例如 -interfaceOrientation 已弃用,要检测当前 View Controller 的方向,我们似乎需要
我有一个简单的 UITraitCollection 扩展: extension UITraitCollection { var isIpad: Bool { return ho
我试图找出如何以编程方式使用 UITraitCollection,但我发现很难理解它。我正在为 iOS 8 中的 iPad Retina 开发。 println(self.traitCollectio
我应该使用 UITraitCollection 类来更新 Size Class 约束吗?这是更新约束的最佳实践吗? 我已经浏览了 UITraitCollection,但不知道如何区分纵向和横向? 最佳
我正在尝试将我的项目更新为 iOS13。我正在使用UIScrollSlidingPages我的应用程序项目中的库。 我把这个库放在我的 UIViewController 中,如下所示。我将自定义 Vi
我正在尝试将 swift 转换为 objective-C。下面是我的代码: swift import UIKit protocol TraitCollectionOverridable { f
我正在使用 UISplitViewController 设计一个 iPad 应用程序.我已经配置了 UISplitViewController这样主视图 Controller (即左侧较细的 View
我有一个在通用 iOS 应用程序中呈现的 View Controller 。在 iPhone 上,它使用自定义 UIPresentationController 显示,该 Controller 使用
UITraitEnvironment 的文件说: This method is called automatically when the current trait collection chang
我有一个 UITextView 设置为显示不同的属性字符串,具体取决于所使用的设备。但是,一旦我使用特征,setText: 就不再起作用了。 我也不知道这两个文本的信息存储在哪里。当我查看 Story
在我的应用程序中,当 iOS 系统暗模式设置发生变化时,我需要进行一些自定义 UI 更改。根据https://developer.apple.com/videos/play/wwdc2019/214/
我是一名优秀的程序员,十分优秀!