Iphone 推式UIViewController';s的视图始终与全屏一样大
在一个iPad应用程序中,我以表单样式(大约540像素宽和高)显示一个模态视图控制器(通过Iphone 推式UIViewController';s的视图始终与全屏一样大,iphone,cocoa-touch,ios,uikit,Iphone,Cocoa Touch,Ios,Uikit,在一个iPad应用程序中,我以表单样式(大约540像素宽和高)显示一个模态视图控制器(通过presentModalViewController),根视图控制器显示良好(其帧大小设置为大致(540540,540),我的代码负责正确布局内容) 但是,当推送视图控制器时,其帧的大小始终为(768,1024),这是错误的。我试图明确地将其框架设置为这样: DetailViewController* detailController = [[DetailViewController alloc] init
presentModalViewController
),根视图控制器显示良好(其帧大小设置为大致(540540,540),我的代码负责正确布局内容)
但是,当推送视图控制器时,其帧的大小始终为(768,1024),这是错误的。我试图明确地将其框架设置为这样:
DetailViewController* detailController = [[DetailViewController alloc] init];
detailController.view.frame = self.view.frame;
[self.navigationController pushViewController:detailController animated:YES];
你知道为什么不能正确设置大小吗?视图控制器需要管理整个“屏幕”的内容。在任何给定时刻,只有一个视图控制器(不包括像UINavigationController这样的容器控制器)处于活动状态。唯一的例外是UISplitViewController,它允许两个视图控制器同时在屏幕上显示内容。您的方法看起来不错。请原谅我的问题,但是你已经用断点和GDB调试过了吗 您可以从控制台(cmd shift r)尝试此操作: 及 在调用UINavigationController上的pushViewController:animated之前和之后打印此内容,以查看其帧大小是否与pushViewController:animated方法不同 另一个注意事项是,很难看到将视图控制器推送到不会占用整个UINavigationController视图区域的UINavigationController的用例。每次推到导航控制器上都代表深入某个导航的级别(与UIView-addSubView不同) 更新:这就是您遇到问题的原因: 视图在显示之前会自动调整大小,以适应导航栏和工具栏(如果存在)之间的大小
你可以在苹果的文档中找到我提供的链接。请参见pushViewController:animated:如果需要运行时视图的实际帧,则应使用
布局子视图。我最终使用它将子视图放置在控制器的视图中。(尽管我必须为控制器的视图创建一个自定义的UIView
子类)您现在演示的视图控制器是UINavigationViewController吗?还请注意,表格为540x620。
print [[self view] frame]
print [[detailController view] frame]