视图的几种创建方式

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下看看,是不是正常哩.

 

 

 

 

 

 

One Comment