我正在开发我的第一个iPad应用程序,该应用程序是一个分割视图,如邮件应用程序。在详细视图中,我有2个子视图,一个用于编辑数据,另一个用于查看数据。当用户处于查看模式时,他们按下按钮,细节视图翻转以显示编辑视图。
我似乎无法使详细视图中的两个视图在iPad方向更改时正确调整大小。在纵向模式下,视图的大小正确,但在更改为横向模式时,两个子视图会在底部和右侧边缘进行剪裁。我认为这些视图应该自动调整它们嵌套在里面的视图。
在根视图控制器中,我有以下代码:
@implementation RootViewController
@synthesize detailViewController;
@synthesize recipies= recipies;
@synthesize delegate;
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
self.detailViewController.recipeView.autoresizingMask= (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth );
self.detailViewController.isEdit= FALSE;
self.detailViewController.editView.autoresizingMask= (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth );
self.detailViewController.editView.hidden= YES;
}
应调整大小的子视图是recipeView和editView。我想通过设置autoresizeingMask,它们会自动调整大小。我在这里缺少的是,我是否需要根据方向变化的可用空间明确设置每个视图的大小?
任何/所有回复都表示赞赏!提前谢谢。
答案 0 :(得分:0)
您是否找到了问题的答案?我与你处于类似或完全相同的位置。我有一个detailview,然后将索引0处的子视图插入到detailview中,但是大小都是错误的,我无法理解为什么。
如果我同时添加detailview和子视图(即将detailview添加到splitviewcontrollers视图数组),那么大小是正确的,但是如果我简单地将子视图插入到现有的detailview上,那么大小可以正常工作在肖像而不是横向或反之亦然(即我认为自动调整不起作用)。我的解决方案是在启动要插入的视图后检查方向并强制其大小。例如
if ( (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) )
{
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, 703, 724);
}
// CHECK: PORTRAIT
else
{
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, 768, 980);
}
我的sizings显然特定于我在下面的detailview上有哪些工具栏或tabbars,这就是为什么我有奇怪的尺寸。
在我对iOS sdk的有限看法和理解中,我上面的解决方案充其量只是一个黑客,iOS应该为我们这样做,并且肯定有一些我们做错了。