如何以英寸爲單位以編程方式獲得屏幕尺寸(例如iPhone 4,3.5英寸)。以英寸爲單位獲取iPhone的實際屏幕尺寸
我發現了一種通過檢測iPhone/iPad模型來實現它的方法,但硬編碼並不是我想要的,所以我看起來不像那樣。
如何以英寸爲單位以編程方式獲得屏幕尺寸(例如iPhone 4,3.5英寸)。以英寸爲單位獲取iPhone的實際屏幕尺寸
我發現了一種通過檢測iPhone/iPad模型來實現它的方法,但硬編碼並不是我想要的,所以我看起來不像那樣。
這將查找設備的屏幕對角線尺寸:
float scale = [[UIScreen mainScreen] scale];
float ppi = scale * ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 132 : 163);
float width = ([[UIScreen mainScreen] bounds].size.width * scale);
float height = ([[UIScreen mainScreen] bounds].size.height * scale);
float horizontal = width/ppi, vertical = height/ppi;
float diagonal = sqrt(pow(horizontal, 2) + pow(vertical, 2));
diagonal
將包含屏幕的對角線尺寸(以英寸爲單位)。
這將與iPhone 6/+一起工作嗎? –
這是否真的爲所有設備提供了正確的價值?這樣我們就可以找出設備的屏幕尺寸,但是每個人都在論壇上講這是不可能的。 –
不適用iOS設備的屏幕範圍廣泛,具有不同的PPI計數:132,264,326和401.據我所知,您無法使用SDK從設備獲取PPI。我看到的唯一選擇是將每個設備名稱與適當的PPI進行映射。 – psobko
我找到了一個不錯的GitHub的項目稱爲 'GBDeviceInfo':
if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPhone35Inch) {
//3.5 inch iphone
}
else if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPhone4Inch) {
//4 inch iphone
}
else if ([GBDeviceInfo deviceDetails].display == GBDeviceDisplayiPad) {
//ipad
}
這裏「提斯:GBDeviceInfo
這是處理此問題的唯一正確方法:瞭解哪個設備是哪個設備。謝謝! –
斯威夫特4版的屏幕
let scale = UIScreen.main.scale
let ppi = scale * ((UIDevice.current.userInterfaceIdiom == .pad) ? 132 : 163);
let width = UIScreen.main.bounds.size.width * scale
let height = UIScreen.main.bounds.size.height * scale
let horizontal = width/ppi, vertical = height/ppi;
let diagonal = sqrt(pow(horizontal, 2) + pow(vertical, 2))
let screenSize = String(format: "%0.1f", diagonal)
爲什麼,對於Chtulhu的愛,你會希望出現這種情況?我只是在開玩笑,但這個要求肯定表明你在錯誤的軌道上。並在英寸,甚至... – katzenhut
@katzenhut我不記得它被稱爲,但有一個公式來計算基於屏幕尺寸的最佳視頻比特率。所以就是這個原因。現在回頭看看,我很高興我沒有硬編碼或使用像MCKapur建議的硬編碼庫,因爲此後又有5個iPhone發佈,還有更多新的iOS設備發佈。 –
@ katzenhut:在屏幕上顯示一英寸的標尺,實際上是一英寸長。 – gnasher729