一、启动图片的设置
项目启动图片的设置有多种方式,但是通常情况下,都是用LaunchImage来管理的。具体的操作方式比较简单,但是一定要注意,当你设置LaunchImage作为启动图片时,一定不要忘记把Launch Screen File中的文字给删除,并且在运行程序之前,最好是把之前运行过的程序给删掉:
二、初始化项目
项目配置完成以后,通常情况下,需要重新划分结构。在iOS开发中,有多种架构可供选择,最常见的架构是MVC,它在软件开发过程中有着广泛的应用。由于MVC本身不是特别完美,后来又衍生出了MVP和MVVM架构。在这里,我们按照MVVM架构的思想对项目目录进行重新划分。
1、使用纯代码来搭建项目
来到General里面,把Main Interface里面的Main给删掉,来到AppDelegate中自己创建Window:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// 创建Window并制定它的frame
window = UIWindow(frame: UIScreen.main.bounds)
// 设置window的rootViewController
window?.rootViewController = nil
// 显示window
window?.makeKeyAndVisible()
return true
}
此时如果运行程序,肯定是看不到window的,因为我们把它设置为nil。接下来需要自定义TabBarController。新建一个名为QFMainViewController的类,让它继承自UITabBarController,然后来到AppDelegate中,将其设置为窗口的根控制器:
// 设置window的rootViewController
window?.rootViewController = QFMainViewController()
此时运行程序就可以看到窗口,只不过它现在还没有颜色,看到的只是黑乎乎的一片。接下来要给它添加子控制器。根据实际情况,在各模块下面的Controller文件夹中创建对应的子控制器,然后来到QFMainViewController的viewDidLoad中创建子控制器:
override func viewDidLoad() {
super.viewDidLoad()
// 设置TabBar的颜色(仅仅只是设置QFMainViewController中TabBar的颜色)
tabBar.tintColor = UIColor.init(red: 202 / 255.0, green: 155 / 255.0, blue: 104 / 255.0, alpha: 1)
// 创建子控制器(tabBar按钮对应的子控制器)
let liveChildVc = QFLiveViewController()
// 设置子控制器的属性
liveChildVc.title = "直播" // 设置子控制器的标题
liveChildVc.tabBarItem.image = UIImage(named: "live-n_25x19_")
liveChildVc.tabBarItem.selectedImage = UIImage(named: "live-p_25x19_")
// 包装导航控制器
let liveChildVcNav = UINavigationController(rootViewController: liveChildVc)
// 添加子控制器
addChildViewController(liveChildVcNav)
}
我们只是添加了一个子控制器,还有其它子控制器需要添加。但是,我们不能再像上面那样做了。重复的代码太多,需要抽一个方法来专门处理子控制器:
我们看到,系统自带了一个添加子控制器的方法。但是,它不满足我们的要求,因为我们要传的参数远不止一个。为此,需要自定义添加子控制器的方法:
override func viewDidLoad() {
super.viewDidLoad()
// 创建子控制器(tabBar按钮对应的子控制器)
addChildViewController(childVc: QFLiveViewController(), title: "首页", imageName: "live")
addChildViewController(childVc: QFRankViewController(), title: "排行", imageName: "ranking")
addChildViewController(childVc: UIViewController(), title: "", imageName: "") // 占位用的
addChildViewController(childVc: QFFoundViewController(), title: "发现", imageName: "found")
addChildViewController(childVc: QFMineViewController(