這是此文檔的第一篇文章镐躲,寫在之前要說的話骆捧。里面設(shè)計(jì)的技術(shù)點(diǎn)可能有些新人不是太了解权均,我只會(huì)說我遇到的難點(diǎn)和思路顿膨,文章也是想到那里寫到那里。
初始化工程叽赊,我們采用Swift
進(jìn)行開發(fā)恋沃,我們選擇基于iOS8.0以上進(jìn)行開發(fā),只支持iPhone。
獲取資源文件和圖片
我們利用電腦的iTunes
下載最新的百思不得姐的應(yīng)用蛇尚,我下載的是4.5版本的應(yīng)用芽唇,后續(xù)的版本可能有一些不同。
修改百思不得姐 4.5.ipa
名字改成百思不得姐 4.5.zip
點(diǎn)擊彈出框使用zip
的后綴名稱。
我們使用Mac
自帶的解壓或者其他解壓的工具解壓百思不得姐 4.5.zip
我們打開解壓出來的文件包匆笤,前往~/Payload/MyWeiboJingXuan
目錄研侣。
MyWeiboJingXuan
這個(gè)可以點(diǎn)擊右鍵,點(diǎn)擊查看包內(nèi)容
進(jìn)入炮捧。
我們刪除沒用的簽名文件夾_CodeSignature
庶诡,nib
文件,
我們把留下來的資源文件放在我新建的工程里面咆课。修改我們的初始化工程和文件所在文件包的位置末誓。
初始化工程文件包下載地址下載地址。
啟動(dòng)頁(yè)面
雖然我們項(xiàng)目設(shè)置的啟動(dòng)圖,但都是一閃而過书蚪。我們需要做一些展示廣告事情什么的喇澡,就需要單獨(dú)的做一個(gè)界面出來。
我們?cè)?code>Main.stroyboard里面新建一個(gè)UIViewController
的界面殊校,新建一個(gè)類BLaunchViewController
晴玖。讓我們新建的界面類指向BLaunchViewController
;
因?yàn)橐@示啟動(dòng)的圖片,我們選擇添加UIImageView
控件到BLaunchViewController
界面上去为流,設(shè)置約束占整個(gè)界面呕屎。
我們新建一個(gè)UIImageView
的變量名稱叫做launchImageView
連接到BLaunchViewController
類里面。
我們只支持iOS8.0以上敬察,只支持iPhone秀睛,所以只支持下面的機(jī)型。
iPhone4s/iPhone5/iPhone5c/iPhone5s/iPhone se/iPhone6/iPhone plus/iPhone7/iPhone7 plus
所以我們支持的分辨率有640x960/640x1136/750x1334/1242x2208
一個(gè)不好的解決方法:
因?yàn)楝F(xiàn)在啟動(dòng)圖都在啟動(dòng)圖包里面存儲(chǔ),暫時(shí)沒找到辦法獲取到里面的圖片莲祸。我們只好提取需要尺寸的圖片單獨(dú)拿出來蹂安。
如果有其他獲取啟動(dòng)包里面圖片可以告訴我。我覺得這個(gè)方法嚴(yán)重造成安裝包的臃腫虫给。
我們?cè)?code>BLaunchViewController里面新增獲取當(dāng)前要顯示圖片的獲取方法getLaunchImage
.
因?yàn)槲抑懊凑掌聊坏姆直媛?@屏幕的倍數(shù)藤抡,我們就需要方法獲取屏幕的尺寸和倍數(shù)就可以合成圖片的名稱。
我們定義常量KAppScreenWidth
標(biāo)識(shí)屏幕的寬度抹估,定義常量KAppScreenHeight
標(biāo)識(shí)屏幕的高度缠黍,定義常量KappScreenScale
標(biāo)識(shí)屏幕的倍數(shù)。
因?yàn)槭?code>CGFloat類型药蜻,可能造成因?yàn)樾?shù)點(diǎn)影響圖片名字查找我們同意用Int()
函數(shù)強(qiáng)行換成Int
類型的瓷式。
/// 獲取啟動(dòng)的圖片
///
/// - returns: 可能因?yàn)閳D片的問題 獲取不到返回為nil
func getLaunchImage() -> UIImage? {
let launchImageName = "\(Int(KAppScreenWidth))x\(Int(KAppScreenHeight))@\(Int(KappScreenScale))"
return UIImage(named: launchImageName)
}
我們?cè)?code>BLaunchViewController的viewDidLoad()
方法里面給launchImageView
賦值。
我們是不是迫不及待的查看效果语泽,我們run
一下贸典。運(yùn)行在iPhone5s 8.4
上面
結(jié)果如下:
為啥是這個(gè)樣子
按照自己的邏輯應(yīng)該不回錯(cuò)的,運(yùn)行出不來踱卵,一頭霧水廊驼。
我覺得可能圖片沒有獲取到据过,我們斷點(diǎn)看一下生成圖片的名稱。
看到這里我們霍然開朗妒挎,前面只是屏幕的尺寸不是分辨率绳锅。并且還缺少x
這個(gè)字段。我們修改一下代碼酝掩。
let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))@\(Int(KappScreenScale))x"
我們繼續(xù)的測(cè)試運(yùn)行鳞芙。
還是沒有出現(xiàn)。
我們使用
po UIImage(named: launchImageName)
打印出來nil
代表沒有找到期虾,我們打印一下圖片的名字原朝。
po launchImageName
"640x1136@2x"
這樣都獲取不到數(shù)據(jù),是不是因?yàn)閳D片名稱后面沒有后綴?我們使用expression
重新設(shè)置圖片的名稱镶苞。
expression launchImageName = "640x1136@2x.png"
我們?cè)俅蔚墨@取圖片喳坠,還是獲取不到。
我們查看一下名字 發(fā)現(xiàn)系統(tǒng)已經(jīng)自動(dòng)把后綴去掉 只剩下分辨率作為圖片的名稱宾尚。
我們?cè)俅卫?code>expression修改名字丙笋。
(lldb) expression launchImageName = "640x1136"
(lldb) po UIImage(named: launchImageName)
發(fā)現(xiàn)這次有結(jié)果了。
既然這樣可以煌贴,我們修改一下代碼
let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))"
再次運(yùn)行。
本章教程結(jié)束 下一章繼續(xù)锥忿。
本次版本下載版本下載