導航:首頁 > 科技大全 > ios如何適配各種屏幕

ios如何適配各種屏幕

發布時間:2023-06-05 13:03:22

① ios開發需要適配的屏幕尺寸有哪些

主要有四中尺寸,3.5寸,4寸,4.7寸,5.5寸

② ...在系統中如何適應 iphone 5s/6/6 Plus 三種屏幕的尺寸

這個看你個人的喜好。最只要的一點就是最好別用5S。帶直角邊框的。拿久了你會發現,你手非常疼

③ iOS 四種iPhone屏幕適配方案(借鑒)

Come on! 來看看 主流的適配方案吧
隨著蘋果發布兩種新尺寸的大屏iPhone 6,iOS平台尺寸適配問題終於還是來了,移動設計全面進入「雜屏」時代。看看下面三款iPhone尺寸和解析度數據就知道屏幕有多雜了。

當然除了這三種還有iPhone4 屏幕是 640*960,加起來就有四種屏幕了,你有沒有感覺很復雜,發過愁嗎,我們來慢慢分析下
加上Android生態中紛繁復雜的各種奇葩尺寸,現在APP設計開發必須考慮適配大、中、小三種屏幕。所以如何做到交付一套設計稿解決適配大中小三屏的問題?設計和開發之間採用什麼協作模式?一個基本思路是:

1、選擇一種尺寸作為設計和開發基準;

2、定義一套適配規則,自動適配剩下兩種尺寸;

3、特殊適配效果給出設計效果。
來看一下手機淘寶的iPhone 6/iPhone 6 Plus採用的協作模式,再慢慢說明原委。

第一步,視覺設計階段,設計師按寬度750px(iPhone 6)做設計稿,除圖片外所有設計元素用矢量路徑來做。設計定稿後在750px的設計稿上做標注,輸出標注圖。同時等比放大1.5倍生成寬度1125px的設計稿,在1125px的稿子里切圖。

第二步,輸出兩個交付物給開發工程師:一個是程序用到的@3x切圖資源,另一個是寬度750px的設計標注圖。

第三步,開發工程師拿到750px標注圖和@3x切圖資源,完成iPhone 6(375pt)的界面開發。此階段不能用固定寬度的方式開發界面,得用自動布局(auto layout),方便後續適配到其它尺寸。

第四步,適配調試階段,基於iPhone 6的界面效果,分別向上向下調試iPhone 6 plus(414pt)和iPhone 5S及以下(320pt)的界面效果。由此完成大中小三屏適配。
為什麼選擇iPhone 6作為基準尺寸?
當面對大中小三種屏幕需要適配的時候,很容易想到先做好一種屏幕,再去適配剩下兩種屏幕。第一個決定是到底以哪種屏幕作為設計和開發的基準尺寸。我們選擇中間尺寸的iPhone 6(750px/375pt)作為基準,基於幾個原因:
1、從中間尺寸向上和向下適配的時候界面調整的幅度最小。375pt下的設計效果適配到414pt和320pt偏差不會太大。假設以414pt為基準做出很優雅的設計,到320pt可能元素之間比例就不是那麼回事了,比如圖片和文字之間視覺比例可能失調。

2、iPhone 6 plus有兩種顯示模式,標准模式解析度為1242x2208,放大模式解析度為1125x2001(即iPhone 6的1.5倍)。可見官方系統里iPhone 6和iPhone 6 plus解析度之間就存在1.5倍的倍率關系。很多情況下這兩種尺寸可以用1.5倍直接等比適配。
3、1242x2208這個奇葩的數值是蘋果官方都不願意公開宣傳的一個解析度,不便於記憶和計算柵格。640x1136雖然是廣泛應用的一個解析度,但是大屏時代依然以小尺寸為設計基準顯然不合時宜,設計師會停留在小屏的視角做設計。

所以,iPhone6的750x1334是最適合基準尺寸。

只交付一套設計稿,默認用什麼規則來適配?

前文提到適配策略是先選擇iPhone 6作為基準設計尺寸,然後通過一套適配規則自動適配到另外兩種尺寸。這套適配規則總結起來就一句話:文字流式,控制項彈性,圖片等比縮放

控制項彈性指的是,navigation、cell、bar等適配過程中垂直方向上高度不變;水平方向寬度變化時,通過調整元素間距或元素右對齊的方式實現自適應。這樣屏幕越大,在垂直方向上可以顯示更多內容,發揮大屏幕的優勢。

按照上述默認適配規則,大中小三種屏幕顯示效果均相同。有時候想在大屏幕顯示更多內容,需要設計出特殊適配效果。比如App store首頁焦點圖,從iPhone 6適配到iPhone 6 plus時焦點圖尺寸和排版做了特殊處理。底下應用列表也從一排3+個變成一排4+個,真正實現了大屏幕顯示更多內容的理念。這些就需要設計師給出相應設計稿。

讀完你懂了嗎,如果有疑問,歡飲留言跟我討論╰( ̄▽ ̄)╮

原文地址

④ iphone X 怎麼做屏幕適配

  1. 這里用 iPhone 6舉例子是因為大部分設計師都用 iPhone 6 來做設計稿,方便大家理解,其實 iPhone 8也是這個解析度。iPhone 6:750×1334(375x667pt @2x)

  2. iPhone X :1125px × 2436px (375pt × 812pt @3x)在邏輯像素上 iPhone X 的寬度和 iPhone 6 保持一致,這是高度高了145pt(812-667),如果你是用@1x做設計稿的時候,那麼你在適配 iPhone X 的時候會方便很多很多,因為只需要增加高度就能得到 iPhone X 的大小,你所有的 symbol 基本都不要變,只是復制幾個蘋果爸爸的 symbol 到你 symbol 裡面即可。用來做 iPhone X 的設計稿(一般也不單獨做 iPhone X 設計)但是如果你用@2x 來做設計稿的只是稍微麻煩點,畢竟蘋果爸爸Sketch UI Kit 都是基於@1x 來做設計稿的,所以你只能把 symbol 重新解散然後做成@2x大小的尺寸,會比較麻煩。

  3. 雖然它們的邏輯像素寬度一致,但是他們的像素解析度是不一樣的,iPhone 6 採用@2x切圖,iPhone X 採用@3x 切圖。有人會有用@2x 做設計稿那怎麼適配 iPhone X 設計稿,難道要縮放?? iPhone 6 (750x1334px)尺寸到 iPhone X(1125x2436px),雖然兩者的寬度關系是1.5倍,但是通過縮放做 iPhone X 也是相當麻煩啊,因為你的 Sketch 設計稿裡面可能存在 symbol,所以這樣的做法是行不通的,其實如果你的團隊都是用@2x 來做設計稿的話,也沒啥問題,那接下來的就提供一個更簡單的方法解決 iPhone X 適配問題。

最後總結

  • 這里只是講解了iPhone X 一小部分和 iOS 適配問題,還有其他適配的經驗希望大家在工作中去積累總結,我這里就不一一講解了。

  • 由於 iPhone X的屏幕比例發生變化,對於長期靠「等比縮放」完成適配的H5活動頁而言也有不小的影響,需要對頁面結構進行適當微調(注意縮放的時候不要把主體裁切了,然後注意頁面的布局在 iPhone X 上面的變化)

  • 如果你的 app 有全屏尺寸的活動圖,沒有導航欄,這個時候應該給開發 @2x(750×1334) 和 @3x(1125×2001) 圖,然後 iPhone X 上的圖會使用@3x的圖按照高度鋪滿然後裁切兩邊(注意兩側被裁切區域不要包含重要內容)

    ⑤ ios 系列設備的解析度各是多少,如何做適配

    解析度和像素

    經新xcode6模擬器驗證(解析度為pt,像素為真實pixel):

    1.iPhone5解析度320x568,像素640x1136,@2x

    2.iPhone6解析度375x667,像素750x1334,@2x

    3.iPhone6 Plus解析度414x736,像素1242x2208,@3x,(注意,在這個解析度下渲染後,圖像等比降低pixel解析度至1080p(1080x1920)

    自動適配

    不處理時自動等比拉伸,如果在老工程列印屏幕frame,依然是320x568

    對比自動適配的和完美適配的導航欄就能看出問題:

    因為拉伸所以會有一些虛,導航欄明顯比64要大,但相比3.5寸到4寸的留黑邊還是好很多。

    如何關閉自動適配方案呢?這個還是老思路,換啟動圖:

    除了換啟動圖外,不得不說的是,新Xcode中可以使用一個xib來設置啟動圖:

    不過這個xib不能關聯任何的代碼(不能自定義View的Class,不能IBOutlet,不能加Object),可以理解成這個xib就是一張截圖,這個方案的好處在於可以使用到Size Classes來針對不同屏幕布局這個xib(感興趣可以看《Size Classes初探》)

    關於手動適配

    只要手動指定了啟動圖或者那個xib,屏幕解析度就已經變成應有的大小了,老代碼中所有關於寫死frame值的代碼通通倒霉,如果去手動適配就要全部適配,建議在找到個可行方案前先不要做修改,自動適配方案還算不影響使用。

    面對4個解析度的iPhone,建議使用Auto Layout布局 + Image Assets管理各個解析度的圖片 + Interface Builder(xib+storyboard)構建UI,Size Classes在低版本iOS系統的表現未知。想要這套手動適配方案,起碼你的工程需要部署在iOS6+,還不用AutoLayout布局的會死的蠻慘。

    關於Xcode 6

    模擬器路徑被換成了 ~/Library/Developer/CoreSimulator/Devices/

    xcode6中已經找不到iOS6的模擬器了,是時候說服大家放棄iOS7-了

    現在起提交App Store強制需要支持64位,是時候梳理一遍所有依賴的第三方lib,更新到64位。(編輯註:這一條據說是個bug)

    ⑥ ios 布局怎麼適配每一種屏幕

    getBounds().xgetBounds().ygetBounds().widthgetBounds().height自己動手豐衣足食,根據frame的大小,讓它自己調動吧比如窗口寬300px,你想讓按鈕寬30px,你就getBounds().width*0.1

    ⑦ iOS屏幕適配的兩種方法

    第一種

    添加兩個文件  UIViewExt.h與UIViewExt.m文件

    在ViewController.h文件中導入頭文件

    #import"UIViewExt.h"

    然後宏定義 獲取設備的高與寬

    #define HEIGHT self.view.height

    #define WIDTH self.view.width

    然後在ViewController.m文件中初始化各種控制項時就可以使用視圖的相對位置



    self.lblName=[[UILabelalloc]initWithFrame:CGRectMake(self.view.left+50,self.view.top+100,WIDTH/8,HEIGHT/16)];

    self.lblPassworw=[[UILabelalloc]initWithFrame:CGRectMake(self.view.left+50,self.lblName.bottom+10,WIDTH/8,HEIGHT/16)];

    第二種

    這種方法是 等比縮放

    首先在AppDelegate.h文件裡面

    宏定義 獲取設備的高與寬

    #define SCREENHEIGHT [[UIScreen mainScreen] bounds].size.height

    #define SCREENWIDTH [[UIScreen mainScreen] bounds].size.width

    接著聲明兩個屬性變數

    @property(assign,nonatomic)floatautoSizeScaleX;

    @property(assign,nonatomic)floatautoSizeScaleY;

    在AppDelegate.m文件裡面

    //初始化AppDelegate單例的方法

    AppDelegate*myDelegate=[[]delegate];

    //判斷屏幕的高大於480即為iPhone5或以上設備因為它們屏幕都是等比增長的

    if(SCREENHEIGHT>480)

    {

    /**

    *以iPhone5為基準若是iPhone5

    則myDelegate.autoSizeScaleX=SCREENWIDTH/320;

    即為myDelegate.autoSizeScaleX=320/320;

    若是iPhone6

    則myDelegate.autoSizeScaleX=SCREENWIDTH/320;

    即為myDelegate.autoSizeScaleX=375/320;

    */

    myDelegate.autoSizeScaleX=SCREENWIDTH/320;

    myDelegate.autoSizeScaleY=SCREENHEIGHT/568;

    }

    else{

    /**

    *否則即為iPhone4

    */

    myDelegate.autoSizeScaleX=1.0;

    myDelegate.autoSizeScaleY=1.0;

    }

    在ViewController.h文件中使用時導入頭文件

    #import"AppDelegate.h"

    模仿系統的CGRectMake方法 重寫一個CGRectMake1方法  在初始化控制項時用這個方法就可以實現等比縮放 來失陪不同屏幕尺寸的iPhone

    /**

    *  CG_INLINE為內聯函數

    將CGRectMake重新定義為CGRectMake1

    *

    *  @param x      <#x description#>

    *  @param y      <#y description#>

    *  @param width  <#width description#>

    *  @param height <#height description#>

    *

    *  @return rect的大小

    */

    CG_INLINECGRect

    CGRectMake1(CGFloatx,CGFloaty,CGFloatwidth,CGFloatheight)

    {

    CGRectrect;

    AppDelegate*myDelegate=[[]delegate];

    rect.origin.x= x *  myDelegate.autoSizeScaleX;

    rect.origin.y= y *  myDelegate.autoSizeScaleY;

    rect.size.width= width * myDelegate.autoSizeScaleX;

    rect.size.height= height * myDelegate.autoSizeScaleY;

    returnrect;

    }

    閱讀全文

    與ios如何適配各種屏幕相關的資料

    熱點內容
    word文件水印怎麼取消 瀏覽:443
    rhel6的鏡像文件在哪裡下載 瀏覽:571
    成功正能量微信頭像 瀏覽:848
    wps表格如何恢復數據 瀏覽:264
    linuxc靜態庫創建 瀏覽:838
    u盤有微信文件但微信恢復不了 瀏覽:585
    蘋果的網站數據是什麼 瀏覽:22
    ps滾字教程 瀏覽:237
    win7網路鄰居如何保存ftp 瀏覽:186
    安卓客戶端代理伺服器 瀏覽:572
    編程用蘋果 瀏覽:659
    51虛擬機的文件管理在哪裡 瀏覽:13
    win10系統有沒有便簽 瀏覽:722
    java引用傳遞和值傳遞 瀏覽:109
    oracle下載安裝教程 瀏覽:854
    php篩選資料庫 瀏覽:830
    怎麼用手機看wlan密碼 瀏覽:745
    奧維地圖導入的文件在哪裡 瀏覽:364
    sdltrados2014教程 瀏覽:43
    培訓制度文件在哪裡找 瀏覽:601

    友情鏈接