使用autoresizingMask的UITableView的大小错误
-
19-09-2019 - |
题
我有没有被正确调整大小使用autoresizeMask一个UITableView(在iPhone 3.0)。
在的UITableView是一个内部的UITabBarController一个UINavigationController,所有这些被编程创建内一个UIViewController内部。状态栏是可见的。
的的UIViewController的代码基本上是:
- (void)loadView {
UIView* rootView = [[UIView alloc] init];
self.view = rootView;
[rootView release];
}
- (void)viewDidLoad {
[super viewDidLoad];
// table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-20-49-44)];
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[self.view addSubview:table];
}
当这样创建的,所述的UITableView大于可用空间稍大。如果我没有错,它正是44个像素越大,导航栏的大小。
然而,如果我取消注释的注释行和评论的下一行的的UITableView的大小是完全正确的。我宁愿用autoresizingMask代替手工计算的UITableView的大小。我在做什么错了?
感谢你在前进!
解决方案
这个问题似乎是我没有设定的loadView根视图的帧。如果定义这种帧,然后定义相对于该帧的子视图的帧,则自动调整大小的掩模将正确地根据根视图是如何被重新调整大小的框架调整子视图。
例如:
- (void)loadView {
UIView* rootView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view = rootView;
[rootView release];
}
- (void)viewDidLoad {
[super viewDidLoad];
table = [[UITableView alloc] initWithFrame:self.view.frame];
table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[self.view addSubview:table];
}
感谢科林Gislason的谁向我指出了正确的方向。
其他提示
在自动尺寸调整掩模不会帮助你与表视图的初始大小。表视图与你给它的框架建立。所述自动尺寸调整掩模限定用于该帧相对于父视图调整大小的规则,当父帧变化。
所以,如果我定义表是的320x100除非我改变它明确地或父视图的帧变化,将保持这种大小。
根据不同的其他意见,你可以根据父母或由父母的框架本身持有的其他意见做计算。
创建的UITableViewController子类的子类的UIViewController instand。
插入的UITableView实例。
在NIB简单地拖放的UIView
上威尔地方的顶部现有的UITableView对象。
通过笔尖或viewDidLoad方法设置的UITableView的大小。
设置经由笔尖基准,DataSource和委托。
现在其简单地转移UIViewController类,并根据需要的可以改变的tableview大小。