iOS獲取螢幕寬高 裝置型號 系統版本資訊

2021-07-24 13:02:38 字數 3795 閱讀 7954

在我學習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...