我不熟悉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];
我在苹果开发者文档中搜索了相关的想法,但我发现没有什么用处。在显示之前,UIViewController是如何处理其视图框架属性的?我在哪里可以找到有用的文档。
谢谢。
更新:事实上,代码来自cocos2d-iphone DirectorTest:https://github.com/cocos2d/cocos2d-iphone/blob/release-2.0-rc1/tests/DirectorTest.m#L143
答案 0 :(得分:5)
你错了 - 你真的需要阅读(并理解)Apple的UIViewController
文档:
View Controller Programming Guide
如果您要在视图控制器的代码中创建视图,则应该在视图控制器的loadView
方法中执行此操作。
直接来自Apple的文档:
以编程方式创建视图
如果您更喜欢以编程方式创建视图... 您可以通过覆盖视图控制器的loadView来实现 方法 即可。您对此方法的实现应执行以下操作:
创建根视图对象。根视图包含所有其他视图 与视图控制器关联。您通常定义框架 此视图与应用程序窗口的大小相匹配,这本身应该是 填满屏幕。但是,框架会根据您的视图进行调整 显示控制器。请参阅“查看控制器视图调整大小。”
您可以使用通用UIView对象,您定义的自定义视图或任何 可以缩放以填充屏幕的其他视图。
创建其他子视图并将其添加到根视图中。对于每一个 查看,您应该执行以下操作:
创建并初始化视图。对于系统视图,通常使用 initWithFrame:方法指定的初始大小和位置 风景。使用addSubview:方法将视图添加到父视图。 将根视图分配给视图控制器的view属性。