前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百思不得姐数据挖掘第一篇

百思不得姐数据挖掘第一篇

作者头像
君赏
发布2018-09-07 15:08:14
2700
发布2018-09-07 15:08:14
举报
文章被收录于专栏:君赏技术博客君赏技术博客

这是此文档的第一篇文章,写在之前要说的话。里面设计的技术点可能有些新人不是太了解,我只会说我遇到的难点和思路,文章也是想到那里写到那里。

初始化工程,我们采用Swift进行开发,我们选择基于iOS8.0以上进行开发,只支持iPhone。

获取资源文件和图片

我们利用电脑的iTunes下载最新的百思不得姐的应用,我下载的是4.5版本的应用,后续的版本可能有一些不同。

修改百思不得姐 4.5.ipa名字改成百思不得姐 4.5.zip点击弹出框使用zip的后缀名称。

我们使用Mac自带的解压或者其他解压的工具解压百思不得姐 4.5.zip

我们打开解压出来的文件包,前往~/Payload/MyWeiboJingXuan目录。

MyWeiboJingXuan这个可以点击右键,点击查看包内容进入。

我们删除没用的签名文件夹_CodeSignaturenib文件,

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

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

启动页面

启动页面

虽然我们项目设置的启动图,但都是一闪而过。我们需要做一些展示广告事情什么的,就需要单独的做一个界面出来。

我们在Main.stroyboard里面新建一个UIViewController的界面,新建一个类BLaunchViewController。让我们新建的界面类指向BLaunchViewController

因为要显示启动的图片,我们选择添加UIImageView控件到BLaunchViewController界面上去,设置约束占整个界面。

约束的图片

我们新建一个UIImageView的变量名称叫做launchImageView连接到BLaunchViewController类里面。

我们只支持iOS8.0以上,只支持iPhone,所以只支持下面的机型。

iPhone4s/iPhone5/iPhone5c/iPhone5s/iPhone se/iPhone6/iPhone plus/iPhone7/iPhone7 plus

所以我们支持的分辨率有640x960/640x1136/750x1334/1242x2208

一个不好的解决方法:

因为现在启动图都在启动图包里面存储,暂时没找到办法获取到里面的图片。我们只好提取需要尺寸的图片单独拿出来。

如果有其他获取启动包里面图片可以告诉我。我觉得这个方法严重造成安装包的臃肿。

我们在BLaunchViewController里面新增获取当前要显示图片的获取方法getLaunchImage.

因为我之前命名按照屏幕的分辨率+@屏幕的倍数,我们就需要方法获取屏幕的尺寸和倍数就可以合成图片的名称。

我们定义常量KAppScreenWidth标识屏幕的宽度,定义常量KAppScreenHeight标识屏幕的高度,定义常量KappScreenScale标识屏幕的倍数。

因为是CGFloat类型,可能造成因为小数点影响图片名字查找我们同意用Int()函数强行换成Int类型的。

代码语言:javascript
复制
/// 获取启动的图片
    ///
    /// - returns: 可能因为图片的问题 获取不到返回为nil
    func getLaunchImage() -> UIImage? {
        let launchImageName = "\(Int(KAppScreenWidth))x\(Int(KAppScreenHeight))@\(Int(KappScreenScale))"
        return UIImage(named: launchImageName)
    }

我们在BLaunchViewControllerviewDidLoad()方法里面给launchImageView赋值。

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

结果如下:

显示结果

为啥是这个样子

崩溃
崩溃

崩溃

按照自己的逻辑应该不回错的,运行出不来,一头雾水。

我觉得可能图片没有获取到,我们断点看一下生成图片的名称。

断点调试

看到这里我们霍然开朗,前面只是屏幕的尺寸不是分辨率。并且还缺少x这个字段。我们修改一下代码。

代码语言:javascript
复制
let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))@\(Int(KappScreenScale))x"

我们继续的测试运行。

ಥ_ಥ
ಥ_ಥ

ಥ_ಥ

还是没有出现。

我们使用

代码语言:javascript
复制
po UIImage(named: launchImageName)

打印出来nil代表没有找到,我们打印一下图片的名字。

代码语言:javascript
复制
po launchImageName

"640x1136@2x"

这样都获取不到数据,是不是因为图片名称后面没有后缀?我们使用expression重新设置图片的名称。

代码语言:javascript
复制
expression launchImageName = "640x1136@2x.png"

我们再次的获取图片,还是获取不到。

我们查看一下名字 发现系统已经自动把后缀去掉 只剩下分辨率作为图片的名称。

我们再次利用expression修改名字。

代码语言:javascript
复制
(lldb) expression launchImageName = "640x1136"
(lldb) po UIImage(named: launchImageName)

发现这次有结果了。

图片

既然这样可以,我们修改一下代码

代码语言:javascript
复制
let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))"

再次运行。

运行成功

本章教程结束 下一章继续。

本次版本下载版本下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取资源文件和图片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档