视图的几种创建方式
Interface builder介绍
构建视图的三种方式:
1.用objective-c手动构建GUI,使用loadView创建主视图,添加其界面元素
2.通过interface Builder,使用可视编辑器布局界面元素.
基于xib的视图控制器在从.xib文件中加载预先构建的界面后,在viewDidLoad中完成自身设置.
3.混合模式.
又分两种类型:
a..xib文件的静态加载
无论何时xcode找到名称与UIViewController派生出的类相匹配的.xib文件,它在初始化实例时都会自动加载该.xib文件.
b.编程式动态加载
通过直接使用objective-c命令加载.xib文件.如initWithNibName: bundle
1.手动创建
a覆盖-loadView (Never call this directly)
b生成你的视图
c设置view property
d使用-init生成视图控制器
// UIViewController的子类 步骤a
- (void)loadView
{
//步骤b
MyView *myView = [[MyView alloc] initWithFrame:frame];
//步骤c
self.view = myView; // 视图控制器现在拥有这个视图
[myView release];
}
使用interface builder 是个比较快捷的方式.下面着重介绍
表示视图控制器.这个是一个抽象类,它的图标被称为代理,因为它虽然在IB中起到一定的作用,但是对象本身并没有嵌入到.xib归档中.
每个视图控制器都有一个称作”view”的实例变量,该变量被设为某个UIView,负责提供实际的屏幕显示.所以,对于视图控制器,File’s Owner代理表示加载并拥有.xib的对象.
Outlet是实例变量在IB中的表示.
,代理对象,表示当前响应用户触摸屏幕上的对象.在应用程序生命周期内,First Responder 在用户与屏幕交互时变化.例如,假设有一个表单.当用户触摸表单中的某个文本域时,那个文本域将成为活动文本域,并担当First Responder的角色.
提供实际的屏幕显示,即为上文本中所指File’s Owner实例变量”view”所对象的UIView
重点是viewCtroller中的view需要加上IBOutlet,这样才可以与view做连接.
附录:
做iphone开发就需要接触其中的xib文件。Interface Builder(IB)是Mac OS X平台下用于设计和测试用户界面(GUI)的应用程序,可以很直观的设计图形界面。实际上Mac OS X下所有的用户界面元素都可以使用代码直接生成;但IB能够使开发者简单快捷的开发出符合Mac OS X human-interface guidelines的GUI。通常你只需要通过简单的拖拽(drag-n-drop)操作来构建GUI就可以了。
IB使用Nib文件储存GUI资源,同时适用于Cocoa和Carbon程序。在需要的时候,Nib文件可以被快速地载入内存。
这里介绍一下ib相关的一点小技巧。
将XIB文件转换为Objective-C源程序
nib2objc是一个小巧的转换工具,可以将XIB文件自动转换为Objective-C的源代码文件。
通常,考虑到程序的效率时,才将XIB直接转换为源代码文件。但是这样一来,通过Interface Builder设定的实例变量与行为方法的接续也没有了,需要重新手写。但是,该工具的源代码是公开的,稍加修饰,就能完成大部分工作。
使用的时候,首先下载的工程代码并用XCode编译一下,会生成一个命令行程序文件 nib2objc。然后如下所示执行转换:
$ nib2objc testnib2objc.xib > testnib2objc.m
这样就可以转换成代码。
附下载地址: https://github.com/akosma/nib2objc/downloads
Ibtool是一个nib资源文件本地化的小工具:
1.从nib文件里面提取可以被本地化的字符串。 可以通过如下的命令在终端里面处理:
ibtool –generate-stringsfile MyNib.strings MyNib.nib
2.等翻译好了字符串以后,就需要通过ibtool去把字符串合并到.nib文件里面去。 具体的命令如下:
ibtool –strings-file MyNib.strings –write MyNewNib.nib MyNib.nib
其中MyNib.nib是你想修改的xib文件。
实例演战:如何建立window-base application
在xcode 4.2之前是有个window-based application的模版.现在改成了empty-application
现在由演示如何从empty-application补充元素成为window-based application
第一步建立项目.选Empty Application.命名就选经典的helloworld
记住,开发ios时,要去掉User Autonatic Reference Counting.
第二步.增加xib, 新建文件选择user interface->empty.
取名MainWindow
同时在target里把Main interface选择MainWindow
第三步增加object 和window.
并把object的classt选择为helloworldAppDelegate
第四步就是关联窗口对象了.
在IB中是用IBOutlet来标识可以连接的.
所以需要更改helloworldAppDelegate.h
看到@propert左边的圈没?这就是标识可以拖动的.
先确保打开了MainWindow.xib,然后打开辅助编辑器().
如图所示.
怎么样?左键选择这个圈看看,可以拖动吧.连接到左边的window吧.任务就完成了哦.
Run下看看,是不是正常哩.
nib2objc看上去很炫啊。mark下,回头得试试~