在我學習android開發的時候,覺得裝置適配是件很頭疼的事情,android的裝置太多了,那時就很羨慕ios開發的人不用操心適配的問題,而當我開始學習ios開發後,ios的螢幕也開始多種多樣了起來...於是也得做適配了,sad...
之前也研究過,這裡把我的方法記錄下來,本文介紹三個常用的裝置資訊獲取方式:
接下來詳細說說各自的獲取方法,其實都還比較簡單。
螢幕的寬高是乙個常常需要用到的資訊,尤其是當你用**寫ui時。比如當你寫乙個uilabel,設定其frame時,你想要它居中,而你想為其設定的寬度為200,那怎麼設定它的x值呢?就是(螢幕的寬度 - 200)/ 2了對吧,這樣就可以保證不管在什麼裝置上它永遠是居中的。獲取螢幕寬、高的方法如下:
[objc]view plain
copy
// 裝置寬度
[uiscreenmainscreen
].bounds
.size
.width
// 裝置高度
[uiscreenmainscreen
].bounds
.size
.height
一般來說我們在pch檔案裡將其設定為巨集,這樣在每個地方就都可以呼叫了,就不用每次都用這麼長一串**:
[objc]view plain
copy
//裝置的寬高
#define screenwidth [uiscreen mainscreen].bounds.size.width
#define screenheight [uiscreen mainscreen].bounds.size.height
這樣在需要用的地方直接使用巨集screenwidth和screenheight就可以了。
獲取裝置型號有幾種方法,這裡我使用的是比較笨的方法,獲取裝置的解析度來判斷裝置的型號。我們先看下面這張表:
裝置
iphone
寬
width
高
height
對角線
diagonal
邏輯解析度
(point)
scale factor
裝置解析度
(pixel)
ppi
3gs2.4 inches (62.1 mm)
4.5 inches (115.5 mm)
3.5-inch
320x480
@1x320x480
1634(s)
2.31 inches (58.6 mm)
4.5 inches (115.2 mm)
3.5-inch
320x480
@2x640x960
326 5c
2.33 inches (59.2 mm)
4.90 inches (124.4 mm)
4-inch
320x568
@2x640x1136
3265(s)
2.31 inches (58.6 mm)
4.87 inches (123.8 mm)
4-inch
320x568
@2x640x1136
3266(s)
2.64 inches (67.0 mm)
5.44 inches (138.1 mm)
4.7-inch
375x667
@2x750x1334
3266(s)+
3.06 inches (77.8 mm)
6.22 inches (158.1 mm)
5.5-inch
414x736
@3x(1242x2208->)
1080x1920
401
關注裝置解析度那一列,我們可以看到幾款螢幕的裝置的解析度是不同的,因此也就可以以此為依據判斷裝置型號,我這裡判斷了幾種當前最常見的型號,同樣使用了巨集:
[objc]view plain
copy
// 根據螢幕解析度判斷裝置,是則返回yes,不是返回no
#define isiphone5or5sor5c ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(640, 1136), [[uiscreen mainscreen] currentmode].size) : no)
#define isiphone6or6s ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(750, 1334), [[uiscreen mainscreen] currentmode].size) : no)
#define isiphone6plusor6splus ([uiscreen instancesrespondtoselector:@selector(currentmode)] ? cgsizeequaltosize(cgsizemake(1242, 2208), [[uiscreen mainscreen] currentmode].size) : no)
那麼我只需要判斷這幾個值哪乙個是yes,就可以知道當前是哪個型號了,如:
[objc]view plain
copy
if(isiphone5or
5sor
5c) else
if(isiphone6or
6s) else
if(isiphone
6plusor
6splus)
這樣就可以啦。
其實相應的ipad、itouch等也都可以這麼判斷,只要找到對應的解析度來判斷就好。
獲取系統版本同樣適用巨集來方便全域性呼叫:
[objc]view plain
copy
// 裝置的系統版本
#define systemversion ([[uidevice currentdevice] systemversion])
這樣你就可以獲取版本號了,可以列印出來:
[objc]view plain
copy
nslog(
@"當前執行系統為:ios%@"
, systemversion);
在使用的時候,可以轉化為float型的數來進行判斷,如:
[objc]view plain
copy
if([systemversion
floatvalue
] >= 7.0
)
常用的獲取裝置資訊的方法就在這裡啦,希望能幫到大家~
IOS獲取螢幕的真實寬高
小弟最近在開發ios應用,卻發現乙個問題,ios7和ios8在橫屏模式下得到的寬高是不一樣的,豎屏是一樣的,但是在網上卻沒有找到類似的解決方法,於是自己寫了乙個方法,如要使用,直接貼上到viewcontroller即可 根據系統版本號得到真實的寬高 iswidth是yes,那麼代表得到寬度,是no代...
android 獲取螢幕寬高
發現專案中有兩種獲取螢幕寬高的方法 一 通過windowmanager獲取display,通過display獲取metrics,通過metrics獲取寬高。最後的單位是px。public static final int getscreenwidth 二 通過windowmanager獲取displ...
Android獲取螢幕寬高
方法一 windowmanager wm1 this.getwindowmanager int width1 wm1.getdefaultdisplay getwidth int height1 wm1.getdefaultdisplay getheight 方法二 windowmanager wm...