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