2017-08-06 72 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

我不認爲有這樣的方法。 –

相關問題