導航:首頁 > 科技大全 > ios獲取屏幕的ppi

ios獲取屏幕的ppi

發布時間:2023-01-22 11:14:03

① iOS 獲取屏幕解析度 以及放大模式、高清模式區別無標題文章

CGRect rect_screen = [[UIScreenmainScreen]bounds];

CGSize size_screen = rect_screen.size;

CGFloat scale_screen = [UIScreenmainScreen].scale;

CGFloat width = size_screen.width*scale_screen;

CGFloat height = size_screen.height*scale_screen;

NSLog(@"width:%f",width);

NSLog(@"height:%f",height);

2015-03-0415:35:06.340reader[10697:179349]width:640.000000

2015-03-0415:35:06.341reader[10697:179349]height:1136.000000

上述情況在iphone6和iPhone6 Plus的縮放模式下,和iPhone5S獲取到的解析度是一樣的。

別忘記iphone 6 6+有放大模式和,正常模式

#define iPhone5 ([UIScreen

instancesRespondToSelector:@selector(currentMode)] ?

CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen]

currentMode].size) : NO)

//放大版的iphone6等於Iphone5的解析度《求區別辦法》

#define iPhone6 ([UIScreen

instancesRespondToSelector:@selector(currentMode)] ?

(CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen]

currentMode].size) || CGSizeEqualToSize(CGSizeMake(640, 1136),

[[UIScreen mainScreen] currentMode].size)) : NO)

#define iPhone6plus ([UIScreen

instancesRespondToSelector:@selector(currentMode)] ?

(CGSizeEqualToSize(CGSizeMake(1125, 2001), [[UIScreen mainScreen]

currentMode].size) || CGSizeEqualToSize(CGSizeMake(1242, 2208),

[[UIScreen mainScreen] currentMode].size))

: NO)

蘋果5ppi是多少

  1. 蘋果iPhone 5,屏幕像素密度是326ppi。

  2. PPI即是Pixels per inch,每英寸所擁有的像素Pixel數目 。

  3. 也就是說屏幕的PPI越大,屏幕成像就越清晰細膩。

③ 蘋果1手機屏幕像素密度

91ppi。屏幕像素密度,直譯過來就是每英寸上顯示的像素數量。表示沿著對角線,每英寸所擁有的像素數目。蘋果1手機屏幕像素密度是91ppi。iPhone是蘋果公司發布搭載iOS操作系統的系列手機。

④ 蘋果 iPhone 4的PPI是多少

蘋果 iPhone 4屏幕的PPI為:326。
iPhone 4採用了名為Retina的顯示技術;
3.5英寸960x640像素解析度的顯示屏幕。
顯示屏幕解析度達到了800:1的高對比度;
同時加入了IPS屏可視角度技術。

⑤ 理解DPI、PPI和邏輯解析度,你需要知道這些

在Google上搜索」DPI vs PPI」可以看到非常多的關於這兩個概念的討論,而且討論內容不僅僅是界面設計、軟體開發的內容,也包含印刷、圖像處理和其他內容。那麼DPI到底是什麼,和PPI又有什麼區別呢?這篇文章,就讓我來帶你一探究竟。

DPI :Dots Per Inch。每英寸點數。

上面這個定義非常簡潔,但是重點沒說清楚:「點」/Dot是什麼?這就是理解DPI的關鍵。

DPI最初用於圖像的印刷。圖像如果要列印到紙上,實際上是通過一系列的墨點來繪制的,在「列印」這個場景中,墨點,就是DPI中D的概念。DPI的含義是點密度,用來描述列印的精細程度。

舉個例子:目前常見的列印機, DPI是300。也就是說列印機能夠在每英寸長度的紙上面,列印300個獨立的墨點。 這就是說,如果我們列印一個邊長為1英寸的黑色正方形,那麼列印機會在這個正方形的范圍內,繪制300 × 300 = 90000個墨點。

這便是DPI在印刷領域的定義。事實上DPI這個詞最早就由印刷行業創建[1]。單色印刷通過控制墨點的密度,來區分不同的灰度,墨點的密度,就稱作DPI。

最初的列印機是點陣式列印機(Dot Matrix Printer)[2],原理是使用撞針撞擊墨帶,墨帶和紙接觸將墨印到紙上。一根撞針將顏色印到紙上,就形成一個「點」。因為撞針的物理特性。不能做得很小,這類列印機的DPI很低,在70左右。

隨後噴墨列印機(Inkjet Printer)[3]的出現,讓DPI提高了非常多,甚至可以支持列印灰度、顏色。最常見的噴墨式列印機,常用DPI為300。有些列印機可以達到1200。過高的DPI對紙張也有了更高的要求。通常我們都在使用300DPI作為列印參數。

PPI是數字顯示時代的參數,PPI是Pixel Per Inch的縮寫,也就是每英寸像素。這個指標用於表示屏幕的物理精細度。

最早的支持GUI的電腦屏幕,比如施樂的Alto,蘋果的Macintosh,屏幕的像素密度都是72PPI[4],這個值,就來自於當時的點陣式列印機的精度。因為PPI相同,所以屏幕上顯示的一個像素,就對應列印出的紙上面的一個點,相同尺寸(5點)的文字,可以在顯示器上得到所見即所得的效果。(當時,紙質文件是主要的信息交換方式)

在這個年代,DPI和PPI的含義是一樣的,因為顯示器上,圖像的組成最小單位,就是屏幕上的一個物理像素。如果一張圖片的尺寸為72×72,那麼在屏幕上顯示為1英寸,列印出來也是1英寸。

如今,在顯示領域DPI區別於PPI,要」歸功「於微軟當時的一個決策。因為眼睛和屏幕的距離,通常大於看紙張的距離(大約長30%)。所以雖然DPI和PPI一致能保證在屏幕上所見即所得,但直接觀感上,屏幕上的內容相對於紙上會更小。

微軟為了解決這個問題,在操作系統層面做了一個HACK:假定屏幕的PPI是96(因為當時大多數顯示器都是72PPI,96 = 72 × 4/3)。所以運行在微軟操作系統上的軟體都認為這塊顯示器的PPI是96,以至於同樣是10點(point)大小的文字,在實際上是72PPI的顯示器上,最終實際看起來就會(相比於軟體認為是72PPI,10像素)大1/3(13像素,實際用來顯示文字的像素數變多了)。[5]

短期來看微軟解決了」保護視力「的問題,但正是因為微軟的這一決策,讓DPI和PPI的概念開始如此難以理解。

同時,也說明了DPI和PPI的一個最重要的區別:

DPI的差異會影響使用密度無關單位(比如:點,point)設置尺寸的圖像的顯示。DPI > PPI,導致佔用更多像素,整個屏幕顯示更少內容,反之亦然。

顯示技術發展到現在,尤其2010年iPhone 4發布之後,PPI成為顯示產品的一個重要競爭參數。高PPI可以帶來更多的顯示空間,也可以用來提升圖像的顯示效果。

從最初的72PPI/96PPI開始,後面幾十年的發展,桌面顯示器的PPI都提高到了110左右,相比於之前,增大的PPI帶來的主要收益是顯示空間的增大。舉個例子:同樣是17寸的顯示器,1280 × 960解析度相比於1024 × 768增加了像素數,同樣也增大了PPI。因為都是17寸,雖然顯示器的顯示面積沒有變大,但是像素數的增加使得屏幕可以顯示更多內容,但是因為物理尺寸不變,界面元素就變小了。

在低PPI時代,操作系統默認會選擇更大顯示空間。長時間以來消費者已經習慣了低PPI的顯示效果,廠商也不願意創新,年復一年販賣著低PPI的屏幕。

直到iPhone 4帶著視網膜屏幕出現,才真正意義的讓消費者感受到了高PPI帶來的顯示效果的提升。iOS的做法,是直接將PPI翻倍,使用4個像素來渲染原本僅用一個像素渲染的內容。對於文字來說,得益於矢量字體,文字的顯示效果變得異常清晰,對於點陣圖來說,高PPI的屏幕,也使得高質量的點陣圖能夠被顯示。

事實證明,高PPI屏幕帶來的顯示效果提升是巨大的。高PPI移動設備的興起,尤其是2013年MacBook Pro with Retina Display的發布,倒逼著桌面電腦廠商和顯示器廠商生產更高PPI的屏幕。蘋果使用移動、桌面兩個平台的優秀體驗,刷新了消費者對於顯示的認知。不過,高PPI並不是一上來就完美。iOS和macOS視網膜屏幕推出之後很長時間,有很多應用仍然沒有適配視網膜屏幕,也就是沒有發揮高PPI的優勢。

iOS和macOS對於沒有適配的應用,在系統層面做了自動適配處理,就是對應用 使用低PPI進行離屏渲染 ,然後將渲染結果 拉伸到高PPI 。這樣的結果是:

以下是適配視網膜屏幕之前、之後的Chrome的顯示差異[6]:

和蘋果的境遇不同,兼容機廠商無法控制操作系統,微軟無法控制硬體。所以Windows對高PPI屏幕的支持要遜色一籌。以至於直到Windows 8.1發布,才可以實現在高PPI設備上充分利用高PPI的優勢,顯示更精細的圖像,同時還能保證舊應用功能可用(並不是所有應用)。[7]

現在,不管是macOS還是Windows 10,都能充分利用高PPI顯示更精細的圖像,並且默認,macOS和Windows都將內容放大,使用更多像素渲染更少內容,也即選擇了「更精細的圖像」。其實,視網膜屏幕的效果,是在足夠高的PPI下,實現了不減少顯示空間的前提下,將顯示精度提高了一倍。

目前的操作系統:Windows、macOS、iOS、Android等,都提供了或者部分支持修改DPI的選項,讓用戶選擇更多顯示空間,或者更精細的圖像。因為物理參數已經固定了,所以更多顯示空間就意味著元素相對更小,更精細的圖像就意味著元素相對更大。當然,得益於物理參數的提升,相比於非Retina顯示設備,均可以達到更高精度,更大空間。

高PPI下,DPI還是那個DPI嗎?為了介紹高PPI時代的顯示策略,先介紹一個在高PPI下,從DPI衍生出的一個更容易理解的參數: scaling factor,縮放因子

為了方便說明,我們要對顯示過程進行抽象。抽象出兩個過程:渲染、輸出;和三層抽象屏幕:邏輯層、渲染層、物理層。開發軟體時,是在邏輯層上使用 邏輯像素 設置元素的長度。操作系統首先將邏輯層上的圖像 渲染 到渲染層,得到 渲染解析度 的圖像;再將渲染層的圖像, 輸出 到物理層,也就是物理顯示設備上。

高PPI下, DPI實際指的是渲染層的渲染像素密度 。如果渲染像素密度和物理像素密度恰好相等,那麼 DPI == PPI 。不過,即便數值相等,含義還是不同的。下面通過在macOS,iOS,Android設備上的例子,來幫助理解這些概念,以及這些概念在操作系統實際顯示過程中的相互作用。

設備:MacBook Pro 2017
物理解析度:2880 × 1800
屏幕尺寸:15.6英寸

macOS支持用戶設置邏輯解析度:

macOS系統在渲染時, 縮放因子固定為2 。以下示例中,為了獲得渲染層的圖像,可以簡單通過全屏截圖獲得。

這個設置是MacBook Pro 2016以前的默認設置。

此時,DPI == PPI。

這個設置是MacBook Pro 2016及以後的默認設置。

為了得到更大的顯示面積,設置了更大的邏輯解析度,因為縮放因子不變,渲染層渲染了超過物理解析度的圖像,DPI大於PPI(屏幕尺寸不變,解析度增大)。雖然和Window早起的處理一樣,增大了DPI,但因為這里並不是像Windows一樣將渲染像素點對點顯示到物理屏幕上,所以實際的效果是界面元素變小,使得顯示空間變大。

因為物理解析度(2880 × 1800)仍然大於邏輯解析度(1680 × 1050),所以並沒有丟失邏輯層的信息。

僅部分iOS設備支持修改邏輯解析度,分別是4.7英寸、5.5英寸iPhone,iPhone Xr和iPhone Xs Max。並且僅支持將邏輯解析度修改為邏輯解析度更低的一檔。比如5.5英寸的iPhone,可以將邏輯解析度修改為4.7英寸iPhone的邏輯解析度。和macOS一樣,為了獲得渲染層的圖像,可以簡單通過全屏截圖獲得。

設備參數:縮放因子 = 3,物理解析度 = 1080 × 1920,PPI = 401。

類似macOS的示例2,雖然最終顯示有縮小,但實際上沒有丟失邏輯層的信息。DPI為461。

設備參數:縮放因子 = 3,物理解析度 = 1080 × 1920,PPI = 401。

類似macOS的示例2,雖然最終顯示有縮小,但實際上沒有丟失邏輯層的信息。DPI為417,相比上面的示例1,邏輯解析度減少,顯示內容變少,渲染解析度變小,界面元素變大。可以看到macOS和iOS都是通過修改邏輯解析度達到修改DPI,修改顯示策略的目的。

設備參數:縮放因子 = 3,物理解析度 = 1242 × 2688,PPI = 458。

iPhone XS Max因為物理像素密度增大到458,屏幕像素數量增加,所以能實現在縮放因子為3時,渲染解析度和物理解析度點對點顯示。實際上iPhone XS Max的 邏輯解析度寬度 ,和5.5英寸iPhone的 邏輯解析度寬度 一致,這也是 iPhone XS Max和5.5英寸iPhone 在橫向上能顯示相同數量內容的原因。

Android的情況就比較特殊了。Google和Windows的境遇比較相似,作為軟體提供商,他們的操作系統會運行在不同的設備上,要應對不同PPI的屏幕。好在Android在設計之初就已經為不同PPI的屏幕適配設計了API,所以不會有早期Windows那樣糟糕的兼容問題,但也帶來了更高的復雜度。

Android和macOS、iOS固定縮放因子 + 指定邏輯解析度不同。Android直接提供修改DPI的方法,廠商可以在構建操作系統固件時,指定DPI。DPI、縮放因子、邏輯解析度的關系如下:

Android同樣提供縮放因子這個參數,同樣,我們依然使用上面介紹的三層抽象模型進行分析。DPI參數,使用 resources.displayMetrics.densityDpi 獲取。

設備參數:物理解析度 = 1080 × 1920,PPI = 403,DPI = 440。
計算參數:縮放因子 = 440 / 160 = 2.75。

可以看到,默認參數下,小米9的渲染解析度和物理解析度一致。那麼修改了DPI會怎樣呢?Android從7.0版本[8]開始在開發者選項中提供了名為」 最小寬度 「的修改項(最小寬度是邏輯解析度的一部分,短邊解析度)。這個修改項的數值,就是邏輯解析度中的短邊值。小米9的默認值是392,我們將其改到480看下效果。

設備參數:物理解析度 = 1080 × 1920,PPI = 403, DPI = 360
計算參數:縮放因子 = 360 / 160 = 2.25。

首先我們注意到DPI變成了360,為什麼改了最小寬度,DPI的值會變化呢?實際上Android系統提供的修改最小寬度的方法,同樣也是通過修改DPI實現的,只不過包裝成了」最小寬度「(事實上就是在修改邏輯解析度),系統在修改的時候換算成DPI,再修改系統參數。

其次我們看到因為Android使用動態的縮放因子,並且物理解析度用作計算縮放因子的參數,所以反算出來的渲染解析度,就是物理解析度。這種做法的好處是 避免了一次內存中的點陣圖縮放操作

因為邏輯像素的增加,屏幕可以顯示更多內容,同時界面元素變小。

為什麼基準DPI的值是160呢?Android並沒有官方解釋,我猜測有一下幾方面原因:

因為Android的渲染策略是通過DPI指定的,所以Android對點陣圖的使用策略,也是通過DPI來確定的。Android將DPI劃分為了幾個檔:

開發者需要提供不同DPI的圖片,使用相同的名稱,如artboard.png,放到不同的目錄下。應用運行時,使用 R.drawable.artboard 引用這張圖片。操作系統根據DPI設置選擇合適的圖片資源進行顯示。系統的DPI和哪個檔位的DPI值相近,就會使用哪個檔位的圖片資源。比如:

iOS和Android開發中使用的長度單位,都是密度無關像素,或者稱作邏輯像素。邏輯像素和渲染像素之間的轉換關系是:

之所以這里在使用渲染像素,而不是物理像素,是為了結論的普適性。對於Android來說:

DP之所以是密度無關像素,就是因為使用DP進行開發,不需要關系DPI,因為在 邏輯層,沒有密度的概念 (可以將邏輯層的圖像內容,理解為矢量內容)。

看到這里,相信你已經對DPI的來龍去脈都有了比較清晰的了解。我們總結一下:

怎麼樣,僅DPI這個概念,隨著科技發展,特別是消費電子的發展,也發生了非常大的變化。各廠商和操作系統對DPI的使用也不盡相同,從早期微軟的虛擬DPI開始,DPI的概念變得越來越難理解。不過,理解DPI不是最終的目的,對於用戶來說,了解如何利用DPI調節最適合自己的顯示效果;對於開發者來說,了解如何利用DPI構建更精細、協調的界面,才是更有價值的事情。

希望本文能幫助到你。

⑥ iOS、Android 開發單位換算及 UI 切圖要求

在移動端 UI 設計中,經常會用到的單位有 4 種:px、pt、dp 和 sp,很多人分辨不清這幾種單位及其換算關系,以及 iOS 和 Android 的切圖要求,我在這里做下簡單的介紹,希望大家讀完後能有所收獲(如有錯誤,歡迎糾正)。

px 即 pixel,像素點,電子屏幕上組成圖像的最基本單位,在描述屏幕解析度時也會使用該單位。1px 表示一個像素,例如 iPhone 8 的尺寸為 750px × 1334px,表示在該手機屏幕上,水平方向每行有 750 個像素點,垂直方向每列有 1334 個像素點。

pt 即 point,有兩個含義:一是印刷行業常用單位,是一個標准長度單位,絕對大小,1pt = 1/72 英寸 = 0.35mm;二是 iOS 開發用的基本單位,當設計師以 1 倍尺寸進行設計 (375pt × 667pt) 並給出標注稿時,開發人員無需除以 2 便可直接使用。

dp 是安卓開發用的基準單位,在 dpi (屏幕像素密度,即每英寸包含的像素點) 為 160 的屏幕為上,1dp = 1px。為了簡單起見,Android 把屏幕密度分為了 5 種:mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi,下文會詳細介紹其換算關系。

在安卓系統里,sp 與 dp 類似,不同的是 sp 可以根據用戶的字體大小首選項進行縮放,而 dp 則不會。 盡量使用 dp 作為空間大小單位,sp 作為文字相關大小單位,例如:新聞類和簡訊類等大篇幅文本,推薦使用 sp 為單位。

在 iOS 開發中,不同機型的 iPhone 設備需要用到不同倍率的切圖,下表格為各 iPhone 機型顯示屏參數對比:

這里再簡單了解下兩個概念,ppi 和 dpi。

ppi (iOS):即 pixel per inch,屏幕像素密度,表示每英寸所包含的像素點,該值越高,屏幕越細膩。
dpi (iOS) :開發像素密度,表示每英寸所包含的開發像素點。

在 iOS 開發中,規定以 ppi = 163,dpi = 163 作為開發基準,

當 ppi = 163,dpi = 163 時,則 1pt = 1px;
當 ppi = 326,dpi = 163 時,則 1pt = 2px;
當 ppi = 401,dpi = 154 時,則 1pt = 2.6px ≈ 3px。
(為什麼 iPhone 8+/7+/6+ 的開發基準是154?可能要問問蘋果了...)

依此類推,得出換算公式一:

若有小數,四捨五入即可。

在 iOS 開發中,目前只需要 @2x 和 @3x 兩種切圖,所以導出 2 倍和 3 倍的 png 圖片即可。導出前注意檢查切圖是否存在半像素、毛邊等情況,保證對齊像素,這樣才能有效避免上線後頁面上的 icon 出現虛邊的問題,提高細節質量。

另外補充一點:從整體開發尺寸看,iPhone 8 是 375 × 667 pt (@2x),而 iPhone X 是 375 × 812 pt (@3x),同樣的寬度,一個用 @2x 圖,一個用 @3x 圖,iPhone X 表現出了更高的清晰度,如圖 2-1 所示。

在 Android 開發中,因為機型參差不齊,需要用屏幕密度來區分設計。

注意,這里的 dpi (Android) 和上文的 dpi (iOS) 是不同的概念,dpi (iOS) 是開發像素密度,而 dpi (Android) 即 dot per inch,表示屏幕像素密度 ,類似 iOS 開發里的 ppi。

Android 中,規定以 dpi = 160 為開發基準,

當 dpi = 160,基準dpi = 160,1dp = 1px;
當 dpi = 240,基準dpi = 160,1dp = 1.5px;
當 dpi = 320,基準dpi = 160,1dp = 2px。

依此類推,得出換算公式二:

在設計圖標時,對於 5 種主流的屏幕像素密度 (mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi) 應按照 2:3:4:6:8 的比例進行縮放,如圖 3-1 所示。

例如,一個啟動圖標的尺寸為 48 × 48 dp,這表示在 mdpi 的屏幕上其實際尺寸應為 48 × 48 px;在 hdpi 的屏幕上其實際大小是 mdpi 的 1.5 倍 (72 × 72 px);在 xhdpi 的屏幕上其實際大小是 mdpi 的 2 倍 (96 × 96 px),依此類推。

在某些況行下,還需要提供一種特殊的切圖: 點九圖 (上圖所示)。點九圖是 Android 開發中用到的一種特殊格式的圖片,文件名以 「.9.png」 結尾。

這種圖片能告訴程序,圖像哪一部分可以被拉升,哪一部分不能被拉升需要保持原有比列。運用點九圖可以保證圖片在不模糊變形的前提下做到自適應,比如對話框背景圖片就會用到點九圖。

--
以上是全部內容,感謝你的閱讀!
End

⑦ iPhone屏幕尺寸和解析度的相關知識 ( DPI vs PPI pt vs px)

DPI <Dots Per Inch> ---- 最初用於衡量列印物上每英寸的點數密度,就是表示你的列印機可以在一英寸內列印多少個點。DPI值越小,列印的內容越不清晰。

當DPI的概念遷移到計算機屏幕上的時候,就應該稱之為PPI <Pixels Per Inch>。同理:PPI就是表示計算機屏幕上每英寸可以顯示的像素點的數量。

pt <Point> ---- 代表點,是一個標準的長度單位,定義上:1 pt = 1 / 72 英寸,英寸跟我們所熟悉厘米、米一樣,所以我們可以明確的指出1pt的長度是多少。

px <Pixel> ---- 代表像素,是屏幕上能顯示的最小單位,在解析度高的屏幕上,一個像素可能會達到我們肉眼無法識別的大小。

 PS: Apple Device Screen Sizes 、 AppStore審核之App預覽規范 、 AppStore審核之App截屏規范

視網膜屏幕是在iPhone 4發布時進入大眾視野的,叫視網膜是因為屏幕的PPI已達到人們肉眼無法看到的級別,即我們肉眼已無法識別屏幕上的一個像素,從技術上來說就是Apple在物理尺寸與上一代相同的屏幕上塞下了2倍的像素。

iPhone 4採用Retina顯示屏,在物理尺寸不變的情況下,像素成倍增加,達到了640x960像素。 iPhone 3GS屏幕上有320 x 480 = 153600個像素點,而iPhone 4屏幕上則有640 x 960 = 614400個像素點,像素個數是原來的4倍。

這樣就出現了一個問題,怎麼樣讓原來的App運行在新的手機上面?  為了運行之前的App,Apple引入了一個新的概念:point (點),「點」這個概念在iOS開發中很重要。iPhone 4屏幕尺寸繼續保持320x480大小,不過單位並非是像素,而是「點」。

在iPhone 3GS中,一個點等於一個像素,也就是說點與像素可以直接互換;在iPhone 4中,一個點等於兩個像素;在iPhone 7 Plus中,一個點等於三個像素。

iPhone 4和iPhone 3GS的屏幕尺寸實際上是一樣的,都是3.5英寸。在屏幕上同樣一個點,實際尺寸大小一樣,只是在iPhone 4上單位英寸內的像素點更多,看起來更加細膩。

iPhone 4/4s  iPhone 5/5s  iPhone 6/6s的PPI都是一致的,都是326,用@2x素材。 

但是iPhone 6 Plus的PPI是401,理論上蘋果應該採用401 / 326 * @2x = @2.46x的素材,但是這個奇葩的比例對於開發者而言很難切圖,所以Apple為了方便開發者就採用了@3x的素材,然後再縮放到@2.46x的屏幕上,也就是縮放到2.46 / 3 = 82%。實際上Apple選取了一個接近比例的87%,這樣算下來,物理解析度和虛擬解析度的比例是87%,也就是1080 / 1242 ≈ 0.87, 1920 / 2208 ≈ 0.87。

⑧ 蘋果4的像素密度是多少ppi

蘋果4的屏幕解析度是640*960,640:960=1:1.5
勾股定理,對角線應該是 根號(1*1+1.5*1.5)=1.80
而對角線物理長度是3.5英寸,
那麼640像素那條邊的物理長度應該是 3.5*1/1.80=1.95英寸
那麼蘋果4的像素密度就是 640像素/1.95英寸=328像素/英寸=328ppi

希望能幫到你

⑨ iOS開發:iPhone尺寸和適配

我們通常所說的iPhone5屏幕尺寸為4英寸、iPhone6屏幕尺寸為4.7英寸,指的是顯示屏對角線的長度(diagonal)

PPI(Pixel Per Inch by diagonal):表示沿著對角線,每英寸所擁有的像素(Pixel)數目。

PPI數值越高,代表顯示屏能夠以越高的密度顯示圖像,即通常所說的解析度越高、顆粒感越弱。

根據勾股定理

計算結果稍有出入,這是因為像素的離散采樣有鋸齒效應。

早期的iPhone3GS的屏幕解析度是320*480(PPI=163),iOS繪制圖形(CGPoint/CGSize/CGRect)均以point為單位(measured in points):

後來在iPhone4中,同樣大小(3.5 inch)的屏幕採用了Retina顯示技術,橫、縱向方向像素密度都被放大到2倍,像素解析度提高到(320x2)x(480x2)= 960x640(PPI=326), 顯像解析度提升至iPhone3GS的4倍(1個Point被渲染成1個2x2的像素矩陣)。

在同樣的邏輯坐標系下(320x480):

為了自動適應解析度,系統會根據設備實際解析度,自動給UIScreen.scale賦值,該屬性對開發者只讀。

在同樣的邏輯解析度下,可以通過scale參數識別是iPhone3GS還是iPhone4(s)。以下基於nativeScale參數,定義了探測機型是否為iPhone6+的宏

--------------------------------------------------------------------------------那麼,同樣的解析度和scale,如何區分機型iPhone4與4s、iPhone5與5s呢?通過[[UIDevice currentDevice] model]只能判別iPhone、iPad、iPod大類,要判斷iPhone具體機型型號,則需要通過sysctlbyname("hw.machine")獲取詳細的設備參數信息予以甄別。

iPhone3GS時代,我們為一個應用提供圖標(或按鈕提供貼圖),只需要icon.png。針對現在的iPhone4~6 Retina顯示屏,需要製作額外的@2x高解析度版本。

Phone6+在實際渲染時,downsampling/1.15(1242x2208->1080x1920),准確的講,應該是@2.46x。蘋果為方便開發者用的是@3x的素材,然後再縮放到@2.46x上。

參考: 一張圖幫你看懂 iPhone 6 Plus 屏幕解析度

<1>

該方法使用系統緩存,適合表視圖重復載入圖像的情形。同時該API根據UIScreen的scale,自動查找包含對應高倍圖後綴名(@2x)的文件,如果找到二倍圖,則image.scale=2.0,對應邏輯size大小以point度量(pixel度量的一半);如果沒找到設置默認image.scale=1.0,對應邏輯size大小同像素尺寸。因此,

<2>

這組方法創建的UIImage對象 沒有使用系統緩存 ,並且指定文件名必須包含明確的高倍圖後綴。

<3>

//考慮  轉屏  的影響,按照實際屏幕方向(UIDevice  Orientation)的寬高

//不考慮轉屏的影響,只取豎屏(UIDevice OrientationPortrait)的寬高

待續

閱讀全文

與ios獲取屏幕的ppi相關的資料

熱點內容
目前取流行的編程語言有哪些 瀏覽:994
tar解壓工具 瀏覽:240
黃埔網路安全建設有哪些 瀏覽:877
php如何操作資料庫 瀏覽:701
微賺網站 瀏覽:510
數控機床常用的編程方法有哪些 瀏覽:467
鐵路與大數據分析產生什麼結果 瀏覽:572
如何把文件轉為種子 瀏覽:59
玩股票杠桿用什麼app 瀏覽:999
怎麼用q幣充qq紅包 瀏覽:140
海外代購app哪個比較好 瀏覽:729
手機改qq密碼怎麼改 瀏覽:238
api壓縮文件夾 瀏覽:847
網路營銷中營銷策略都有哪些 瀏覽:926
mat格式文件數據類型 瀏覽:132
手機文件刪除如何恢復 瀏覽:682
如何計算帶有指數的數據 瀏覽:243
手機數據存儲在主板的哪裡 瀏覽:151
什麼網站物品最實惠 瀏覽:361
win7自帶截圖工具不能用 瀏覽:939

友情鏈接