警告:从枚举类型“UIInterfaceOrientation”到不同枚举类型“UIDeviceOrientation”的隐式转换?

Posted

技术标签:

【中文标题】警告:从枚举类型“UIInterfaceOrientation”到不同枚举类型“UIDeviceOrientation”的隐式转换?【英文标题】:warning : Implicit conversion from enumeration type ' UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'? 【发布时间】:2011-10-19 00:39:50 【问题描述】:

在这一行:[self deviceInterfaceOrientationChanged:interfaceOrientation];

我收到此警告

Implicit conversion from enumeration type ' UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'?

你能帮帮我吗?拜托。谢谢你

代码如下:

-(void) receivedRotate: (NSNotification*) 通知 NSLog(@"receivedRotate"); UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] 方向]; 如果(接口方向!= UIDeviceOrientationUnknown) [self deviceInterfaceOrientationChanged:interfaceOrientation]; 别的 NSLog(@"未知设备方向");

【问题讨论】:

参考以下帖子。它完美地回答了它。 [*** 帖子][1] [1]:***.com/questions/7015709/… 【参考方案1】:

UIDeviceOrientation 和 UIInterfaceOrientation 是不同的类型,第一个是设备方向,包括其他状态,例如 Face up 或 Face Down 等,而第二个仅涵盖 2D 状态,例如 Portrait 和 Landscape。

不要从设备获取设备方向,而是从状态栏获取,如下所示:

[[UIApplication sharedApplication] statusBarOrientation] 

这个方法会返回一个 UIInterfaceOrientation 值,问题就会消失。

【讨论】:

viewWillTransitionToSize 不依赖于方向,而是依赖于在某个事件之后应用视图的大小将如何更改,这抽象了方向的使用,并且可能还包括其他类型的事件。如果您想遵循该范例,使用任何类型的方向代码都是错误的。

以上是关于警告:从枚举类型“UIInterfaceOrientation”到不同枚举类型“UIDeviceOrientation”的隐式转换?的主要内容,如果未能解决你的问题,请参考以下文章

在结构中使用 typedef 枚举并避免类型混合警告

如何去除枚举类型字段必须要有注释说明的警告!

在 GCC 中使用不同枚举类型分配或执行算术时如何发出警告?

将枚举转换为具有溢出的整数时会出现警告

针对 Objective-C 枚举的新 Swift 5 警告:如何摆脱它们?

如果使用特定的枚举值,如何生成警告