嵌套的UIView调整大小

时间:2011-03-09 14:09:10

标签: uiview resize orientation

我正在开发我的第一个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,它们会自动调整大小。我在这里缺少的是,我是否需要根据方向变化的可用空间明确设置每个视图的大小?

任何/所有回复都表示赞赏!提前谢谢。

1 个答案:

答案 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应该为我们这样做,并且肯定有一些我们做错了。