前言:
今天我司美工,呸!是設(shè)計!新買了一個iPhone X,下載了我們的app,引導(dǎo)頁怎么變形了?What?作為一個資深的iOS開發(fā),怎么能忍受這種瑕疵存在呢?簡直是奇恥大辱呀!所以開始了接下來探索之旅!
之前變形的加載方式
首先把@2x,@3x的圖片放到Assets.xcassets中,如下圖

然后再引導(dǎo)頁控制器中加載引導(dǎo)頁圖片

結(jié)果iPhone X,XS,XS max變形!卒!
修改后的加載方式:
1、每個不同屏幕都做新的引導(dǎo)頁,安裝包會很大(因為我們的引導(dǎo)頁好幾張呢),可能會有兩種解決辦法了。
?? 1、是背景色是不變的話,設(shè)計師可以只做中間的圖片,這樣會小一些;
? ?2、是只切割一套屏幕的引導(dǎo)頁(750*1334)即可,當然只切割兩套(4/4s、6/6s)也是可以的。
2、不同屏幕的屏大小比較:
?4/4s ? ? 3.5inch ? ?分辨率640*960 ? ? ?高寬比960/640 = 1.5
5/5s/5c/SE ? ? ? ? 4inch ? ? ? ? ? ?分辨率640*1136 ? ? ? ? ? ?高寬比1136/640 = 1.775
6/6s/7/8 ? ? ? ? ? ? ?4.7inch ? ? ? ? 分辨率750*1334 ? ? ? ? ? 高寬比1334/750 = 1.775 ?
6plus/6splus
5.5inch ? ? ? ? ?分辨率1242*2208 ? ? ? ? 高寬比2208/1242 = 1.778
/7plus/8plus ? ? ? ? ??
x ? ? ? ? ? ? ? ? ? ? ? ? ? 5.8inch ? ? ? ? 分辨率1125*2436 ? ? ? ? ?高寬比2436/1125 = ?2.165
可知 ?切割一套6/6s就可以了 ,小屏可做截取 ?大屏可做等比拉伸顯示。
3、UIImageView有個屬性是contentMode,可取值:UIViewContentModeScaleToFill ?拉伸圖片至填充整個UIImageView,圖片的顯示尺寸會和imageVew的尺寸一樣 。

UIViewContentModeScaleAspectFill 按照圖片原來的寬高比進行伸縮,伸縮至圖片的寬度和imageView的寬度相等 或者 圖片的高度和imageView的高度相等 ?(只有寬和高其中一個相等是不可以的,圖片的縮放尺寸可以超過imageView尺寸大小,伸縮必有scale ?等比伸縮必有aspect)如下圖所示即可以了。
說到這里,是不是應(yīng)該掏出小本本記起來了!
操作如下:
1、將750*1334的圖片放進工程里面。

2、修改加載引導(dǎo)頁圖片的方式

3、看效果!

這樣刪掉了3倍圖,節(jié)省了內(nèi)存,又完美解決引導(dǎo)頁變形問題。
PS:
imageWithContentsOfFile:和??imageNamed:圖片加載方式的比較,
imageNamed:當加載時會緩存圖片,所以下次加載的時候會比較快,但是會占內(nèi)存,適合頻繁加載的小圖片。
imageWithContentsOfFile:通過圖片文件的路徑加載圖片,不會緩存圖片,適合不經(jīng)常使用的大圖片加載。