嵌套 UIView 调整大小

Posted

技术标签:

【中文标题】嵌套 UIView 调整大小【英文标题】:Nested UIView Resizing 【发布时间】:2011-03-09 14:09:10 【问题描述】:

我正在开发我的第一个 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 处的子视图插入到详细视图中,但大小都错误,我不知道为什么。

如果我同时添加详细视图和子视图(即将详细视图添加到视图的 splitviewcontrollers 数组中),那么尺寸是正确的,但是如果我简单地将子视图插入到已经存在的详细视图上,那么尺寸要么有效在纵向而不是横向或反之亦然(即我认为自动调整大小不起作用)。我的解决方案是在启动要插入的视图后检查方向并强制其大小。例如

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); 
           

我的尺寸显然特定于我在下面的详细视图中拥有的工具栏或标签栏,这就是为什么我有奇怪的尺寸。

在我对 ios sdk 的有限看法和理解中,我上面的解决方案充其量只是一个 hack,iOS 应该为我们做这件事,一定是我们做错了什么。

【讨论】:

以上是关于嵌套 UIView 调整大小的主要内容,如果未能解决你的问题,请参考以下文章

如何调整 UIView 的大小并强制其子视图调整大小

UIView 层不随视图调整大小?

调整 UIView 的大小并在 drawRect 中动态调整绘图的大小

如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?

调整旋转 UIView 的子视图大小

创建后调整uiview子类的大小