1

我有一个UITableView没有正确使用autoresizeMask(在iPhone 3.0中)调整大小。使用autoresizingMask的UITableView的大小错误

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的大小。我究竟做错了什么?

预先感谢您!

回答

2

问题似乎是我没有在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的谁向我指出了正确的方向。

1

自动调整掩码不会帮助您使用表视图的初始大小。表格视图是用您提供的框架创建的。自动调整屏蔽定义了在父框架更改时调整此框架相对于父视图的大小的规则。

因此,如果我定义一个320x100的表格,它将保持该大小,除非我明确地更改它或父视图的框架更改。

根据其他视图,您可以根据父级或父级框架自身持有的其他视图进行计算。

+0

感谢您的迅速回复,科林。自动调整面具正在做一些事情。表视图正在创建一个320x100大小,但它填补了所有的屏幕。我可以将100改为200,尺寸也是一样的。 – hpique 2009-12-15 17:06:01

+0

如果您没有设置自动调整大小的掩码,但仍将其设置为320x100,则它不会填满整个屏幕? – 2009-12-15 17:40:13

+0

没错。如果没有设置自动调整掩码设置,表格视图将根据帧进行大小调整。 – hpique 2009-12-15 17:51:12

0

创建UIVableControlController子类的UIViewController子类的实例。

插入UITableView实例。

在NIB简单地拖放的UIView

对威尔地方现有的UITableView对象的顶部。

通过nib或viewDidLoad方法设置uitableview的大小。

通过笔尖设置参考,数据源和委托。

现在它只是简单地调用UIViewController类,并且可以根据需要更改tableview大小。

+0

它工作吗与静态tableviews? – Claus 2012-08-06 12:33:17

+0

hi Claus, 我尝试使用动态内容。但它将与静态内容一起工作... – damithH 2012-08-15 04:19:16