作者 kyson 2018.03.28 22:36:00 Lesson2:【壁纸宝贝】UI层级关系 评论:0 iOS的开发小伙伴都知道,APP从启动到运行会经历以下阶段:  `rootViewController`是壁纸宝贝的`DDViewController`的一个子类,在`AppDelegate.m`文件中指定: ``` DDMenuController *rootViewController = [[DDMenuController alloc]initWithRootViewController:navigationController]; rootViewController.leftViewController = menuViewController; self.rootViewController = rootViewController; self.window.rootViewController = self.rootViewController; ``` 其中`DDMenuController `是我下载的一个三方控件,最近发现问题很多,但一时间也懒得改动,暂时使用它吧。 `DDMenuController`的初始化需要两个`Controller`,一个`MenuViewController`,一个`rootViewController`,从而形成首页的抽屉效果:  对应到`AppDelegate`中的代码如下: ``` WPHomeViewController *homeViewController = [[WPHomeViewController alloc] init]; WPMenuViewController *menuViewController = [[WPMenuViewController alloc] init]; WPNavigationController *navigationController = [[WPNavigationController alloc]initWithRootViewController:homeViewController]; DDMenuController *rootViewController = [[DDMenuController alloc]initWithRootViewController:navigationController]; ``` 可见,App的首页为`WPHomeViewController`,抽屉控制器为`WPMenuViewController`。为了使`WPHomeViewController`有切换页面的功能,因此将其放入一个导航栏控制器。 因此我们能得到如下的层级关系  `MenuViewController`是一个普通的`UIViewController`,这里不做过多介绍,主要是`HomeViewController`,因为里面有两个`CollectionView`和一个`TableView`。对应到代码中分别是: ``` @property (nonatomic, strong) LatestCollectionView *mLastestCollectionView; @property (nonatomic, strong) RecommndCollectionView *mRecommndCollectionView; @property (nonatomic, strong) CategoryTableView *mCategoryTableView; ``` 以上代码位于`WPHomeViewController`中。 因此`HomeViewController`的UI层级大概是这样:  以上就是【壁纸宝贝】中重要的控制器类,了解了这几个类,基本对项目的UI层级已经有了大致的了解。 ### 注意 以上对项目代码的分析都是基于分支 [feature/lesson2](https://github.com/kysonzhu/wallpaper/tree/feature/lesson2),大家如果要查看代码,需要切到此分支下。 ### 视频教程 [2.【壁纸宝贝】UI层级关系](http://www.miaopai.com/show/9b37kTJRjZOTiqRMbkawQ2qn8WILbWIXi-tgCg__.htm) 赏 标签:none