- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
由于 iOS8 检测 UIViewController 方向的方法已被弃用。
例如 -interfaceOrientation
已弃用,要检测当前 View Controller 的方向,我们似乎需要向 View Controller 的 -traitCollection
属性询问此信息。
我有点困惑 iPad 的特征在两个方向上都设置为常规。
检测当前方向的最佳方法是什么?
最佳答案
使用 UIDevice 的 -orientation
属性是不正确的(即使它可以在大多数情况下工作)并且可能导致一些错误,例如 UIDeviceOrientation
也考虑设备的方向,如果它面朝上或朝下,UIInterfaceOrientation
枚举中没有这些值的对。
此外,如果您将应用程序锁定在某个特定方向,UIDevice 会在不考虑该方向的情况下为您提供设备方向。
另一方面,iOS8 弃用了 UIViewController
类的 interfaceOrientation
属性。
有 2 个选项可用于检测界面方向:
仍然缺少的是一种理解界面方向变化方向的方法,这在动画中非常重要。
在 WWDC 2014“View controller advancement in iOS8”的 session 中,演讲者提供了一个解决方案对于这个问题,也可以使用替换 -will/DidRotateToInterfaceOrientation
的方法。
此处建议的解决方案已部分实现:
-(void) viewWillTransitionToSize:(CGSize)s withTransitionCoordinator:(UIVCTC)t {
orientation = [self orientationFromTransform: [t targetTransform]];
oldOrientation = [[UIApplication sharedApplication] statusBarOrientation];
[self myWillRotateToInterfaceOrientation:orientation duration: duration];
[t animateAlongsideTransition:^(id <UIVCTCContext>) {
[self myWillAnimateRotationToInterfaceOrientation:orientation
duration:duration];
}
completion: ^(id <UIVCTCContext>) {
[self myDidAnimateFromInterfaceOrientation:oldOrientation];
}];
}
关于ios - UITraitCollection iPad如何检测当前方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28660145/
由于 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/
我是一名优秀的程序员,十分优秀!