iOS是如何设置UIViewController的视图框架才显示的?

问题描述 投票:2回答:1

我对iOS UIViewController的细节实现不熟悉。我用下面的代码创建了一个新的UIViewController并显示出来,但是在显示的过程中,我设置的框架是 initWithFrame 方法不工作,控制器的视图总是全屏(320*480)。

UIViewController *viewController = [[UIViewController alloc] init];

// view
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 140, 130)];
viewController.view = view;
[view release];
AppController *app = (AppController*)[[UIApplication sharedApplication] delegate];

UINavigationController *nav = [app navController];
[nav pushViewController:viewController animated:YES];
 [viewController release];

我在apple developer文档中搜索了releative思想,但没有找到任何有用的东西。UIViewController在显示它之前是如何处理它的视图框架属性的?我在哪里可以找到有用的文档。

谢谢你。


更新:事实上,这段代码来自cocos2d-iphone DirectorTest。https:/github.comcocos2dcocos2d-iphoneblobrelease-2.0-rc1testsDirectorTest.m#L143。

ios uiview uiviewcontroller
1个回答
6
投票

你把这一切都弄错了--你真的需要阅读(并理解)苹果的 UIViewController 文档。

查看控制器目录

查看控制器编程指南

查看控制器参考

如果你是在视图控制器的代码中创建一个视图,你应该在视图控制器的 loadView 方法。

直接来自苹果的文档。

直接从苹果公司的文档:

如果你喜欢以编程方式创建视图......。 你可以通过覆盖你的视图控制器的loadView方法来实现。. 你对这个方法的实现应该做以下工作。

创建一个根视图对象。根视图包含与视图控制器相关联的所有其他视图。通常,您为该视图定义的框架与应用程序窗口的大小相匹配,其本身应充满屏幕。但是,框架会根据您的视图控制器的显示方式进行调整。请参阅 "视图控制器视图大小调整"。

您可以使用通用的UIView对象、您定义的自定义视图或任何其他可以缩放以填充屏幕的视图。

创建额外的子视图并将其添加到根视图中。对于每个视图,你应该做以下工作。

创建并初始化视图。对于系统视图,通常使用initWithFrame:方法来指定视图的初始大小和位置。使用addSubview:方法将视图添加到父视图中。 将根视图分配给视图控制器的视图属性。

© www.soinside.com 2019 - 2024. All rights reserved.