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

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

初始化工程,我们采用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类型的。

/// 获取启动的图片
    ///
    /// - 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这个字段。我们修改一下代码。

let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))@\(Int(KappScreenScale))x"

我们继续的测试运行。

ಥ_ಥ

还是没有出现。

我们使用

po UIImage(named: launchImageName)

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

po launchImageName

"640x1136@2x"

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

expression launchImageName = "640x1136@2x.png"

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

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

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

(lldb) expression launchImageName = "640x1136"
(lldb) po UIImage(named: launchImageName)

发现这次有结果了。

图片

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

let launchImageName = "\(Int(KAppScreenWidth * KappScreenScale))x\(Int(KAppScreenHeight * KappScreenScale))"

再次运行。

运行成功

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

本次版本下载版本下载

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏韩东吉的Unity杂货铺

零基础入门 21: UGUI Inputfield

因为一些外部原因,以后文章的发布只会在公众号内推送,取消了在蛮牛专栏的文章更新,望蛮牛小伙伴周知,关注微信公众号,可以第一时间收到新分享的推送通知。

3092
来自专栏CSDN技术头条

前端知识点总结——Vue

作用:将表达式执行的结果 输出当调用元素的 innerHTML 中;还可以将数据绑定到视图。

1302
来自专栏Petrichor的专栏

nano:基本操作

2304
来自专栏向治洪

微信小程序实例之摇一摇抽奖

概述 前面我们讲了如何开始微信小程序搭建和一些组件的介绍。微信小组件和微信小程序入门 微信小程序目录 为了更好的理解小程序和小程序开发,我们首先来看一下项目的目...

5916
来自专栏macOS 开发学习

Mac OSX 开发基础控件学习之 NSOutlineView

在开发基于osx的Application的过程中,当我们需要显示一组列表结构的数据时,比较容易想到的控件是NSTableView;但如果你显示的数据有层级结构...

2112
来自专栏用户2442861的专栏

chrome调试工具常用功能整理

chrome devtools 中 Elements panel 是审查 dom 元素和 css 的, 可以实时修改 dom/css.

951
来自专栏Timhbw博客

iOS基础问答面试题连载(二)-附答案

2016-11-2120:41:52 发表评论 7℃热度 1.xcode5和xcode7区别? 2.pch文件原理? 3.UIApplication常见...

3549
来自专栏不知的专栏

反-反爬虫:用几行代码写出和人类一样的动态爬虫

本文将从 Phantomjs 动态爬虫介绍起,用3行代码傻瓜式完成基于 Casper 的动态爬虫来绕过对抗策略获取页面数据。

1.3K1
来自专栏彭湖湾的编程世界

【javascript】原生js更改css样式的两种方式

下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1;css表达式...

2408
来自专栏IT笔记

SpringMvc+Velocity的一些配置总结

前言 公司用了许久的struts2+hibernate,前两年时间SpringMvic+Shiro也有做过,大多都是基于JSP实现的界面展示层,最近一段使用使用...

3697

扫码关注云+社区

领取腾讯云代金券