首页 技术 正文
技术 2022年11月21日
0 收藏 487 点赞 4,105 浏览 1908 个字

先讲述下nib, nib是3.0版本以前的产物,在终端下我们可以看到,NIB其实是一个文件夹,里面有可执行的二进制文件;

区分xib和storyboard的区别?

不同点:

1> 无论nib也好,xib也好,最终在执行UIViewController生命周期函数loadView之前,都会转化成可执行的nib文件。

2> storyboard是多个xib文件集合的描述文件,一个xib文件对应着一个视图控制器和多个视图。

  toryboard时,一个工程只需要一个主storyboard文件就可以。

相同点:

1> 是基于xml的描述文件,可以实现可视化编程。

//—————————————————————————————————————————————————————//

main.storyboard 文件。既然如此,那么storybord又是如何加载的呢?

在创建storyboard apps 时,会自动生成几个默认的文件, AppDelegate.h 便是其中之一。 示意如下:

import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

这些默认生成的文件, 我们要特别关注下, 弄清来龙去脉。 
AppDelegate 继承于 UIResponder,并且拥有一个 UIWindow property。 声明的方式很简洁。 
再打开默认生成的 AppDelegate.m 文件,你会感到很诧异, AppDelegate.m 所展示的代码几乎为空。 所有的method 都是空的。 即使 application:didFinishLaunchingWithOptions: , 仅仅是返回 YES, 也没有其他代码可言。 
这就是说,不管是 AppDelegate.h 还是AppDelegate.m , 都没看到什么玄机。 貌似庞然大物的storyboard,究竟是怎么玩的? 
常言说的好,一个好汉三个帮。 仅仅查看AppDelegate.h/m ,还是远远不够的,  storybord 还有三个好汉iOS之nib、xib及storyboard的区别及storyboard的加载过程
当storyboard apps 启动时, 它怎么知道从哪里加载main.storyboard 文件呢?  秘密就在info.plist上。 你会看到, UIMainStoryboardFile 或 “Main storyboard file base name” 的键值设为了 Main。当app 启动时,UIApplicaiton 会自动加载main.storyboard 文件。 同时,会自动加载 main.storyboard  上的第一个视图控制器 (view controller),并且,将该 view controller 所对应的 View 加载到UIWindow 对象中。 
也许你已经注意到了, app 启动时,做了这么的工作,但我们还没有编写一行代码。 storyboard技术的引进,其最大的意义在于, 大大减少与 UI相关的 代码量。


storyboard 帮手:Deployment Info 的设置。  如下:

iOS之nib、xib及storyboard的区别及storyboard的加载过程


storyboard 帮手:main.m 文件, 代码如下:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
在main.m 中, 虽然语句不多,但这个语句直接决定了app 的生命周期。 这行代码的作用是,将app delegate class 传给 UIApplicationMain。  因为整个App 启动和运行的入口,就在UIApplicationMain中。 
以上讲述了 sotroyboard 的加载过程。 不管nib 派还是 storyboard 派,其UIMainWindow的加载原理都是一样的。 只不过,nib派需要手工编写更多的代码。 明白了这些道理, 即使基于 Xcode5创建工程,你也可以置 main.storyboard 于不顾, 尽情地游走于自己创建的nib之间。 正所谓“我的nib,我说了算, 想创建多少nib,就创建多少”。 就是这个 Feel, 倍爽。 一天写 1000行代码,轻松任我行。 

 



    					
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,996
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,510
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,353
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,137
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848