Storyboard是iOS SDK5.0开始的新宠,记得当时大家对使用纯代码、xib文件以及新出现的Storyboard讨论非常激烈,如同当时ARC与非ARC一般。
对于Storyboard是否好用,只能说仁者见仁智者见智,毕竟只是一个工具,与每个人/团队的编码习惯有关。
Storyboard使用也有一段时间了,目前并没有发现太多的拦路虎,而且UIStoryboard类的API也非常简单,上手非常容易。
UIStoryboard
NS_CLASS_AVAILABLE_IOS(5_0) @interface UIStoryboard : NSObject {
}
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
- (id)instantiateInitialViewController;
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;
根据storyboard的名称初始化
- (id)instantiateInitialViewController;
storyboard对象初始化成功后,调用该方法获得该storyboard中的默认第一个初始化的视图控制器,如果是后来自己新建的UIStoryboard,要记住在 attributes inspector中将 Is Initial View Controller选项勾上
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;
与上个方法类似,不过是根据identifier获取storyboard中的视图控制器对象。同样,需要在storyboard中预先将视图控制器的identifier设置好
storyboard除了快速开发视图之外,还有两个特色功能是非常棒的
界面关系流图
storyboard与xib不一样的是,它是一个视图控制器的集合,在storyboard中存在的多个控制器,这些控制器之间又有相互的联系,在storyboard中可以清晰的体现每一个控制器之间的联系
视图容器的使用
视图容器这个概念是只有storyboard中才有的,它非常贴合我们常说的模块化、功能化的概念,将视图拆分从更小的单元来编辑。当然这些不是说一定需要storyboard才能实现,通过代码或者xib同样可以达到模块化、功能化效果,这三者本质是一样的,只是storyboard将这样一个关系直接体现出来,使程序更加一目了然。
storyboard该如何使用才能提高效率
1.按模块拆分storyboard
在使用storyboard的时候,尽可能按照功能模块区分,这样每一个功能模块有着独自的storyboard,视图之间的跳转逻辑简单清晰,日后方便维护。切忌storyboard过于庞大,过多的视图,不清晰的逻辑会把人看晕。
2.组件类功能
组建类功能按照功能的复杂度。单视图的组件其实使用xib就可以完全胜任;涉及到多视图的组件,还是建议单独一个storyboard来做界面。storyboard与xib同样都是资源文件,不用过于担心因为过多的storyboard或者xib到处APP运行速度变慢(APP速度慢,建议还是多排查网络与数据加载这一块)。
网友评论