嵌套 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 的大小并在 drawRect 中动态调整绘图的大小