百思不得姐數(shù)據(jù)挖掘第一篇

這是此文檔的第一篇文章,寫在之前要說的話。里面設(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)容進入。

我們刪除沒用的簽名文件夾_CodeSignaturenib文件,

我們把留下來的資源文件放在我新建的工程里面。修改我們的初始化工程和文件所在文件包的位置。

初始化工程文件包下載地址下載地址

啟動頁面

啟動頁面
啟動頁面

雖然我們項目設(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)
    }

我們在BLaunchViewControllerviewDidLoad()方法里面給launchImageView賦值。

我們是不是迫不及待的查看效果,我們run一下。運行在iPhone5s 8.4上面

結(jié)果如下:

顯示結(jié)果
顯示結(jié)果

為啥是這個樣子

崩潰
崩潰

按照自己的邏輯應(yīng)該不回錯的,運行出不來,一頭霧水。

我覺得可能圖片沒有獲取到,我們斷點看一下生成圖片的名稱。

斷點調(diào)試
斷點調(diào)試

看到這里我們霍然開朗,前面只是屏幕的尺寸不是分辨率。并且還缺少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ù)。

本次版本下載版本下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容