這是此文檔的第一篇文章,寫在之前要說的話。里面設(shè)計的技術(shù)點可能有些新人不是太了解,我只會說我遇到的難點和思路,文章也是想到那里寫到那里。
初始化工程,我們采用Swift進行開發(fā),我們選擇基于iOS8.0以上進行開發(fā),只支持iPhone。
獲取資源文件和圖片
我們利用電腦的iTunes下載最新的百思不得姐的應(yīng)用,我下載的是4.5版本的應(yīng)用,后續(xù)的版本可能有一些不同。
修改百思不得姐 4.5.ipa名字改成百思不得姐 4.5.zip點擊彈出框使用zip的后綴名稱。
我們使用Mac自帶的解壓或者其他解壓的工具解壓百思不得姐 4.5.zip
我們打開解壓出來的文件包,前往~/Payload/MyWeiboJingXuan目錄。
MyWeiboJingXuan這個可以點擊右鍵,點擊查看包內(nèi)容進入。
我們刪除沒用的簽名文件夾_CodeSignature,nib文件,
我們把留下來的資源文件放在我新建的工程里面。修改我們的初始化工程和文件所在文件包的位置。
初始化工程文件包下載地址下載地址。
啟動頁面
雖然我們項目設(shè)置的啟動圖,但都是一閃而過。我們需要做一些展示廣告事情什么的,就需要單獨的做一個界面出來。
我們在Main.stroyboard里面新建一個UIViewController的界面,新建一個類BLaunchViewController。讓我們新建的界面類指向BLaunchViewController;
因為要顯示啟動的圖片,我們選擇添加UIImageView控件到BLaunchViewController界面上去,設(shè)置約束占整個界面。

我們新建一個UIImageView的變量名稱叫做launchImageView連接到BLaunchViewController類里面。
我們只支持iOS8.0以上,只支持iPhone,所以只支持下面的機型。
iPhone4s/iPhone5/iPhone5c/iPhone5s/iPhone se/iPhone6/iPhone plus/iPhone7/iPhone7 plus
所以我們支持的分辨率有640x960/640x1136/750x1334/1242x2208
一個不好的解決方法:
因為現(xiàn)在啟動圖都在啟動圖包里面存儲,暫時沒找到辦法獲取到里面的圖片。我們只好提取需要尺寸的圖片單獨拿出來。
如果有其他獲取啟動包里面圖片可以告訴我。我覺得這個方法嚴重造成安裝包的臃腫。
我們在BLaunchViewController里面新增獲取當前要顯示圖片的獲取方法getLaunchImage.
因為我之前命名按照屏幕的分辨率+@屏幕的倍數(shù),我們就需要方法獲取屏幕的尺寸和倍數(shù)就可以合成圖片的名稱。
我們定義常量KAppScreenWidth標識屏幕的寬度,定義常量KAppScreenHeight標識屏幕的高度,定義常量KappScreenScale標識屏幕的倍數(shù)。
因為是CGFloat類型,可能造成因為小數(shù)點影響圖片名字查找我們同意用Int()函數(shù)強行換成Int類型的。
/// 獲取啟動的圖片
///
/// - returns: 可能因為圖片的問題 獲取不到返回為nil
func getLaunchImage() -> UIImage? {
let launchImageName = "\(Int(KAppScreenWidth))x\(Int(KAppScreenHeight))@\(Int(KappScreenScale))"
return UIImage(named: launchImageName)
}
我們在BLaunchViewController的viewDidLoad()方法里面給launchImageView賦值。
我們是不是迫不及待的查看效果,我們run一下。運行在iPhone5s 8.4上面
結(jié)果如下:

為啥是這個樣子

按照自己的邏輯應(yīng)該不回錯的,運行出不來,一頭霧水。
我覺得可能圖片沒有獲取到,我們斷點看一下生成圖片的名稱。

看到這里我們霍然開朗,前面只是屏幕的尺寸不是分辨率。并且還缺少x這個字段。我們修改一下代碼。
let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))@\(Int(KappScreenScale))x"
我們繼續(xù)的測試運行。

還是沒有出現(xiàn)。
我們使用
po UIImage(named: launchImageName)
打印出來nil代表沒有找到,我們打印一下圖片的名字。
po launchImageName
"640x1136@2x"
這樣都獲取不到數(shù)據(jù),是不是因為圖片名稱后面沒有后綴?我們使用expression重新設(shè)置圖片的名稱。
expression launchImageName = "640x1136@2x.png"
我們再次的獲取圖片,還是獲取不到。
我們查看一下名字 發(fā)現(xiàn)系統(tǒng)已經(jīng)自動把后綴去掉 只剩下分辨率作為圖片的名稱。
我們再次利用expression修改名字。
(lldb) expression launchImageName = "640x1136"
(lldb) po UIImage(named: launchImageName)
發(fā)現(xiàn)這次有結(jié)果了。

既然這樣可以,我們修改一下代碼
let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))"
再次運行。

本章教程結(jié)束 下一章繼續(xù)。
本次版本下載版本下載