献给初学iOS的小盆友们——微博app项目开发之一 项目初始化
本人自学iOS也有七八个月了,不敢说学到很深入了,但也算入了门。此次微博app项目参考了传智播客培训教材,主要学习内容有架构思想,封装思想,代码重构,业务逻辑等内容,项目涵盖面广泛,讲解易懂,且采用纯代码方式搭建UI,希望对那些没有时间看视频的初学者们有所帮助。相信学习完本套项目,初学者会在编程思想上有一个很大的提升。
内容
- 项目素材获取
- 环境配置
- 自定义tabBarController
- 修改tabBar内部结构
- 划分结构
本节资料
第一节资料下载
1.1 项目素材获取
首先模仿一个项目,需要图片等素材,单凭自己是做不出来的。本项目提供了基本的图片素材供下载使用,一般项目素材的获取步骤如下:
- 打开苹果电脑iTunes应用,选择顶部栏“AppStore”项
- 然后在搜索框内输入“微博”并搜索
- 找到微博并点击,进去后点击微博图标下的“取得”按钮
- 输入 iCloud账户密码后即可下载
- 左上角下载按钮可以显示下载进度
- 点击顶部栏“我的iPhone应用按钮”
- 找到微博应用,右键点击,选择“在Finder中显示”
- 可以看到下载的是ipa类型的文件,使用解压文件解压后即可得到微博应用文件夹
- 进入文件夹后,选择Payload下的Weibo.app文件,右键点击后选择“显示包内容”,即可看到微博应用所需的所有图片,以后项目模仿都会用得到
1.2 环境配置
开发任何一个大型的应用都需要提前对开发环境进行配置,本次微博项目对Xcode进行了能满足我们模仿要求的简单设置。配置过程也就是修改info.plist文件而已,点击“微博模拟”项目出现的设置页面就是info.plist的图形化界面。配置过程如下:
- Bundle Identifier 设置
Bundle Identifier 主要作用有app在上传app store时为了区分不同程序 时使用,开发推送功能时需要,在这里设置成YGWeibo.- - - - 。
- Version 版本号
以后迭代开发时,版本号必须比之前的大,在这里不需要设置
- Development Target
选择7.0以后的都可以
- Devices
选择iPhone
- Main Interface
此次项目采用纯代码创建,所以不需要加载storyboard,在这里设置为空,并且把左侧Main.Storyboard,ViewController.h,ViewController.m 文件删除。
- Device orientation
只选择portrait
- Status Bar Style
选择default后,勾选Hide Status Bar
这里讲一讲,怎么用纯代码得到跟加载main.storyboard有相同效果的界面。首先苹果应用程序的启动步骤是这样的,在一开启时,首先进入main函数,main 函数内主要执行三个步骤,首先创建UIApplication对象,然后创建AppDelegate对象,并且成为UIApplication对象的代理属性,然后开启主线程循环,最后加载info.plist文件,判断是否有main.storyboard,如果有,就会加载main.storyboard。因为我们这里才用纯代码开发,所以info.plist就没有main.storyboard文件了,需要在AppDelegate.m里的第一个代理方法中设置窗口,以及创建并加载视图控制器,代码如下,但是此代码非最终的tabBarVC的设置代码,以后会有修改此处只做演示用。此代码就相当于加载Storyboard的步骤。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 为了展示效果 设置背景色为黄色
self.window.backgroundColor = [UIColor yellowColor];
// 创建tabBarViewController
UITabBarController *tabBarVc = [[UITabBarController alloc] init];
tabBarVc.view.backgroundColor = [UIColor redColor];
// 管理子控制器
// 首页
UIViewController *home = [[UIViewController alloc] init];
home.view.backgroundColor = [