gpt4 book ai didi

ios - 在应用程序扩展中检测方向的最佳方法是什么?

转载 作者:技术小花猫 更新时间:2023-10-29 10:33:40 24 4
gpt4 key购买 nike

在应用程序扩展中检测设备方向的最佳方法是什么?我在这里找到的解决方案的结果好坏参半:

How to detect Orientation Change in Custom Keyboard Extension in iOS 8?

Get device current orientation (App Extension)

我查看了大小类和 UITraitCollection,发现设备错误地报告它是纵向的,而实际上它是横向的(不确定这是操作系统错误,还是我不是以正确的方式查询正确的 API)。

完成的最佳方法是什么:

  • 首次加载扩展时设备的当前方向
  • 设备将旋转到的方向
  • 设备旋转的方向

谢谢,

最佳答案

我遇到了这个问题,也看了你的例子,但没有很好的解决方案。我是如何解决它的:我创建了一个类,它对 UIScreen 值进行一些计算并返回自定义的设备方向。

类标题:

typedef NS_ENUM(NSInteger, InterfaceOrientationType) {
InterfaceOrientationTypePortrait,
InterfaceOrientationTypeLandscape
};

@interface InterfaceOrientation : NSObject

+ (InterfaceOrientationType)orientation;

@end

实现:

@implementation InterfaceOrientation

+ (InterfaceOrientationType)orientation{

CGFloat scale = [UIScreen mainScreen].scale;
CGSize nativeSize = [UIScreen mainScreen].currentMode.size;
CGSize sizeInPoints = [UIScreen mainScreen].bounds.size;

InterfaceOrientationType result;

if(scale * sizeInPoints.width == nativeSize.width){
result = InterfaceOrientationTypePortrait;
}else{
result = InterfaceOrientationTypeLandscape;
}

return result;
}

@end

我将它放在 viewWillLayoutSubviews 或 viewDidLayoutSubviews 方法中以捕获方向更改事件。

if([InterfaceOrientation orientation] == InterfaceOrientationTypePortrait){
// portrait
}else{
// landscape
}

如果您想获得设备方向的确切一侧(左、右、倒置),此方法将无法解决您的问题。它只返回纵向或横向方向。

希望对你有所帮助。

关于ios - 在应用程序扩展中检测方向的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com