2017-08-06 44 views
0

我正在所有苹果平台上制作通用游戏。问题是有很多宽高比,随着越来越多的设备,它变得很麻烦。我已经试过如下:以编程方式获取xcode中的设备纵横比

var deviceAspectRatio: CGFloat? { 
#if os(iOS) 
    if UIDevice.current.model.contains("iPhone") { 
     return 16/9 
    } else if UIDevice.current.model.contains("iPad") { 
     return 4/3 
    } 
#elseif os(tvOS) 
    return 16/9 //There might be other aspect ratios also 
#elseif os(watchOS) 
    return 1 
#elseif os(macOS) 
    //figure out aspect ratio 
#else 
    return nil 
#endif 
} 

而且即使有这样的,Xcode中给我一个错误“失踪有望重回‘CGFloat的?’函数返回”。请帮助。

回答

0

macOS的诀窍是可能有多个屏幕,所以如果是这样的话,你必须决定你感兴趣的是哪一个。但是,如果你在屏幕上定居,你可以只需从NSScreen.frame中获取帧并将宽度除以高度即可。

此代码将得到屏幕宽高比一个给定的窗口是:

guard let frame = someWindow.screen?.frame else { return nil } 
let aspectRatio = NSWidth(frame)/NSHeight(frame) 

此外,你应该是iOS上做的,而不是用类似的东西UIScreen硬编码值出现。苹果有一天可能会发布一款新设备,其中有一些其他宽高比是您的应用无法预期的。

+0

这就是我所说的。有没有一种通用的方式来做到这一点,而不是为每种类型的操作系统编码?像'Device.screen.aspectRatio'? (这是pseudoCode) – Fayyouz

+0

我不认为有这样的方法。 –

相关问题