转自:http://www.aiw3.com/iphone/06081019.html
UIViewController实例提供了极佳的核心视图管理。它们只是没有提供实际视图。可以根据自己的需要创建一个,或者通过LoadView方法将它安装到视图控制器中。每一个UIView- ControllerSH子类都实现了此方法,可在其中将控制器连接到视图实例。需要执行两项任务;初始化视图,然后将它连接到控制器。
·初始化内容视图,并调整其大小,方法是调用initWithFrame:并使用[[UIScreenmainScreen]applicationFrame]作为其参数。这将返回应用程序的标准范围。数学方法会自动考虑任何屏幕导航栏和选项卡栏。第1章中的HelloWorld示例提供了一个简单的实际布局。
·将视图连接到控制器,方法是指定一个self.view给UIView实例。在LoadView方法中完成此操作(例如,self.view=contentVleW)。
在操作专用控制器时,要始终确保从子视图中调用于类版本的方法(即[superloadView])。这将确保子视图继承父视图的布局行为以及类方法和变量。其他关键的UIViewController方法包括以下几个。
1.init
使用类的init方法设置视图控制器的标题和其他需要在实际使用类之前设置的特性。要使标题与应用程序名称保持一致,可以为([[NSBundle mainBundl刨 infoDictionary] objectForKey:@”CFBundleName”]指定self.title。这将返回在束的Info.plist文件中定义的名称。
与uIView不同,UIViewController实例是一个抽象的对象,不在物理屏幕上显示。不要像操作普通的UIView那样设置一个边框。UIviews使用inltWithFrame:,UIViewControllers使用init。在正确命名的loadView方法中设置任何视图边框。
2.shouldAutorotateToInterfaceOrientation:
此方法返回YES或者NO,这取决于是否希望在程序中支持自动旋转。返回YES时,视图控制器使用若干个标记确定自动旋转的方式。代码清单3-1显示了Loa~View方法中一段典型的代码,它指定子视图应该自动在垂直和水平方向重新调整大小。
3.viewDidADDear:和vieWDidDisappear:
每次UIViewController视图进入屏幕或离开屏幕时都会调用这两个方法——通常因为视图之间的导航。使用这些方法刷新视图,以反映当前数据状态并更新存储的数据。通过这些方法,可以声明或放弃文本元素的首要响应者状态,根据需要删除文本选择,或执行任何其他需要在将控制返回给用户之前完成的簿记。
4.didRotateFromInterfaceOrlentatlon:
通过在UIViewController子类中实现此方法可以获取方向更改。通过此方法,可以响应新的方向并传递之前的方向(如果你希望根据所涉及的更改执行特定的动画类型)。从一个方向移动到另一个方向,而不经过预期的中间阶段,这是完全可能的,因此也避免了假设。我们使用传递给此方法的实际数据。
说明 苹果公司已承诺在未来某个时刻在SDK中分别提供对横向和纵向视图的支持。在撰写本书时,此功能尚未实现。当方向发生改变时,需要重新调整屏幕。要强制应用程序进入横向模式, 就对shouldAutorotateToInterfaceOrlentation:返回NO,调用 applicationDidFinishLaunching:方法中的[[UIAppllCatl012 shareclApplication] setStatusBarOrlentation:UIInterfaceOrientationLandscapeRight),并在Ubfo.plist文件中将UIInterfaceOrientation设置为UIInterfaceOrientationLandscapeRight。