iOS如何擷取螢幕寬高、裝置型號、系統版本資訊_IOS

來源:互聯網
上載者:User

介紹
在我學習Android開發的時候,覺得裝置適配是件很頭疼的事情,android的裝置太多了,那時就很羨慕iOS開發的人不用操心適配的問題,而當我開始學習iOS開發後,iOS的螢幕也開始多種多樣了起來...於是也得做適配了,sad...
之前也研究過,這裡把我的方法記錄下來,本文介紹三個常用的裝置資訊擷取方式:

  • 擷取螢幕的寬高。用於在設定控制項位置的時候計算相對螢幕的距離
  • 擷取裝置的型號。5s和6+的螢幕大小相差很遠,相應的控制項位置、大小都需要做出調整,不然就會出現在6+上顯得很空曠或者在5s上顯示不全的問題。
  • 擷取系統版本。不同的系統版本有著不同的特性,舉個栗子,iOS 9以下的版本就沒有Live Photo;再舉個栗子,iOS 7以上的系統版本往往需要調整一下邊界

接下來詳細說說各自的擷取方法,其實都還比較簡單。

1、擷取螢幕的寬高

螢幕的寬高是一個常常需要用到的資訊,尤其是當你用代碼寫UI時。比如當你寫一個UILabel,設定其frame時,你想要它置中,而你想為其設定的寬度為200,那怎麼設定它的x值呢?就是(螢幕的寬度 - 200)/ 2了對吧,這樣就可以保證不管在什麼裝置上它永遠是置中的。擷取螢幕寬、高的方法如下:

// 裝置寬度  [UIScreen mainScreen].bounds.size.width  // 裝置高度 [UIScreen mainScreen].bounds.size.height 

一般來說我們在pch檔案裡將其設定為宏,這樣在每個地方就都可以調用了,就不用每次都用這麼長一串代碼:

//裝置的寬高 #define SCREENWIDTH    [UIScreen mainScreen].bounds.size.width #define SCREENHEIGHT   [UIScreen mainScreen].bounds.size.height 

這樣在需要用的地方直接使用宏SCREENWIDTH和SCREENHEIGHT就可以了。

2、擷取裝置的型號

擷取裝置型號有幾種方法,這裡我使用的是比較笨的方法,擷取裝置的解析度來判斷裝置的型號。我們先看下面這張表:

關注裝置解析度那一列,我們可以看到幾款螢幕的裝置的解析度是不同的,因此也就可以以此為依據判斷裝置型號,我這裡判斷了幾種當前最常見的型號,同樣使用了宏:

// 根據螢幕解析度判斷裝置,是則返回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,就可以知道當前是哪個型號了,如:

if (isiPhone5or5sor5c) {   NSLog(@"這是 iPhone5 或 5s 或 5c") ; } else if (isiPhone6or6s) {   NSLog(@"這是 iPhone6 或 6s"); } else if (isiPhone6plusor6splus) {   NSLog(@"這是 iPhone6plus 或6splus"); } 

這樣就可以啦。
其實相應的iPad、iTouch等也都可以這麼判斷,只要找到對應的解析度來判斷就好。

3、擷取系統版本

擷取系統版本同樣適用宏來方便全域調用:

// 裝置的系統版本 #define SystemVersion ([[UIDevice currentDevice] systemVersion]) 

這樣你就可以擷取版本號碼了,可以列印出來:
NSLog(@"當前運行系統為:iOS%@", SystemVersion); 

在使用的時候,可以轉化為float型的數來進行判斷,如:

if ([SystemVersion floatValue] >= 7.0) {   …… } 

常用的擷取裝置資訊的方法就在這裡啦,希望能幫到大家~
這裡是我在github的樣本工程地址:https://github.com/Cloudox/GetDeviceInfoDemo,歡迎star和fork~

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.