1.UIViewController生命周期几种方法调用时机
- - (id)initWithNibName:(NSString )nibNameOrNil bundle:(NSBundle )nibBundleOrNil;
当UIViewController在初始化加载xib文件时,该方法被调用。 - - (void)loadView;
当每次访问UIViewController的view(比如controller.view,self.view)并且view为nil,该方法就会被调用。 - - (void)viewWillUnload;
- - (void)viewDidUnload;
- - (void)viewDidLoad;
不管是通过xib文件还是重写loadView创建UIViewController的view,在view创建完毕后,最终都会调用该方法。 - - (void)viewWillAppear:(BOOL)animated;
当view将要呈现在UI界面上时会调用该方法。 - - (void)viewDidAppear:(BOOL)animated;
当view已经完全过渡到屏幕上时会调用该方法。 - - (void)viewWillDisappear:(BOOL)animated;
当view将要消失,或被覆盖、隐藏时会调用该方法。 - - (void)viewDidDisappear:(BOOL)animated;
当view已经完全消失,或被覆盖、隐藏时会调用该方法。
2.UIViewController xib的加载过程
loadView默认实现就是在自定义的UIViewController类里不重写loadView方法,或者重写后只是在方法里简单实现[super loadView]。默认实现做了如下几个工作:
- 它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view
如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件
[[UIViewController alloc] initWithNibName:@”ViewController” bundle:nil];
如果没有明显地传xib文件名,就会加载跟UIViewController同名的xib文件
[[UIViewController alloc] init]; // 加载UIViewController.xib - 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性,大致如下:
self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];
3.几种控制器容器的优缺点
1.UITabBarController(Tabbar底部标签式:Instagram、微信、微博)
UITabBarController作为一种容器适合管理底部标签式(TabBar 如: Instagram、微信、微博)这种结构的APP
优点
- 清楚当前所在的入口位置
- 轻松在各入口间频繁跳转且不会迷失方向
- 直接展现最重要入口的内容信息(默认首页)
缺点
功能入口过多时,该模式显得笨重不实用(超过5个的时候会将其他控制器添加到一个更多界面)
2.UINavigationController (Springboard跳板式:星巴克)
UINavigationController作为一种容器适合管理跳板式(SpringBoard 如: 星巴克)这种结构的APP
优点
- 清晰展现各入口
- 容易记住各入口位置,方便快速找到
确定
- 无法在多入口间灵活跳转,不适合任务操作
- 容易形成更深的路径
- 不能直接展现入口内容
- 不能显示太多入口次级内容
3.UINavigationController做整体,融合TabBarController(List Menu列表式:知乎)
优点
- 层次展示清晰
- 可展示内容较长的标题
- 可展示标题的次级内容
缺点
- 同级内容过多时,用户浏览容易产生疲劳
- 排版灵活性不是很高
- 只能通过排列顺序、颜色来区分各入口重要程度
4.UIScrollvIewController融合pageControl (Carousel旋转木马式:豆瓣同城)
优点
- 单页面内容整体性强
- 线性的浏览方式有顺畅感、方向感
缺点
- 不适合展示过多页面
- 不能跳跃性地查看间隔的页面,只能按顺序查看相邻的页面
- 由于各页面内容结构相似,容易忽略后面的内容
5. Drawer抽屉式:豆瓣小组
优点
- 兼容多种模式(页面内自有组织)
- 扩展性好
缺点
- 隐藏框架中其他入口
- 对入口交互的功能可见性(affordance)要求高
- 对排版要求高
6. Plus点聚式:Path
优点
- 灵活
- 展示方式有趣
- 使界面更开阔
缺点
- 隐藏框架中其他入口
- 对入口交互的功能可见性(affordance)要求高
7.Gallery陈列馆式:多看,豆瓣电影
优点
- 直观展现各项内容
- 方便浏览经常更新的内容
缺点
- 不适合展现顶层入口框架
- 容易形成界面内容过多,显得杂乱
- 设计效果容易呆板
8.Waterfall瀑布式
优点
- 浏览时产生流畅体验
缺点
- 缺乏对整体内容的体积感,容易发生空间位置迷失
- 浏览一段时间后,容易产生疲劳感