【发布时间】:2012-05-30 16:05:55
【问题描述】:
我不熟悉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 在显示之前是如何处理它的 view frame 属性的?我在哪里可以找到有用的文档。
谢谢。
更新:其实代码来自cocos2d-iphone DirectorTest:https://github.com/cocos2d/cocos2d-iphone/blob/release-2.0-rc1/tests/DirectorTest.m#L143
【问题讨论】:
-
您确定看不到下面的导航控制器视图吗?您是否尝试过为背景设置自定义颜色?另外你的导航是错误的。如果此代码在视图控制器中 - 使用
self.navigationController到达导航控制器并将新的视图控制器推送到它上面。 -
@Eimantas 我更新了,这段代码来自 cocos2d 测试,运行正常,视图全屏显示,即使它的 frame 设置为 (0, 0, 160, 240)
-
这段代码只是一个写得很糟糕的测试用例,不应该在实际应用程序中使用。但是,请注意视图框架可能会根据自动调整大小的遮罩而改变。
标签: ios uiview uiviewcontroller