簡體   English   中英

確定iPad上UITableView的大小

[英]Determine the size of a UITableView on iPad

我必須將一張桌子的寬度分成2個,3個,5個……相等的部分。 目的是用2、3、5,...大小相等的正方形子視圖填充表格單元。 (圖像)當然,桌子的高度取決於此。

這就是我確定桌子的大小並根據要放置的圖像數確定的方法。 方法numberOfPicsPerRow返回用戶選擇在表的每一行中顯示的圖像數的整數值。

- (CGFloat) rowHeight{

    fcAppAppDelegate *delegate = (fcAppAppDelegate *);

    CGRect      bounds = self.tableView.bounds;
    //CGRect          bounds = self.view.bounds; // Alternative that returns the same result.
    float       tableWidth; 
    if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] delegate].tabBarController.interfaceOrientation))
        tableWidth = bounds.size.width;
    else
        tableWidth = bounds.size.height;

    NSLog (@"tableWidth: %f", tableWidth);
    return tableWidth / [MatrixPhotoListTVC noOfPicsPerRow];
}

這是我第一次設置表格的行高的地方:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.rowHeight = [self rowHeight];

}

在iPhone上一切正常。 但是,在iPad上,tableView.bounds或view.bounds返回(寬度= 320,高度= 372)。 有趣的是,旋轉設備時這些值是正確的。 (寬度= 768,高度= 960)

有人對此有解釋嗎? viewDidLoad是否不是確定表大小的合適位置?

某些談論這種情況的人-在這種情況下,是寫問題-改變了一切。

但是,其他人也可能發生這種情況,因此我將問題保留在系統中。 這是答案:

視圖放置后,將viewDidLoad稱為即時。 這意味着在大多數情況下是從Nib文件加載的。 我使用的筆尖文件僅分配給iPhone,而不分配給iPad尺寸。 這就是為什么視圖尺寸與IB中的尺寸完全相同的原因。

我將調用從viewDidLoad移到了viewWillAppear,並且工作正常。 顯然,iOS在viewDidLoad和viewWillAppear調用之間自動調整了iPad的視圖(效果很好)。

如果有人從學術或文檔角度知道可以打電話的更好地方,那么我們將不勝感激。

但是,現在看來工作正常。

我會將您的代碼切換到-viewWillAppear或-viewDidAppear方法,因為表視圖已經完成了任何布局。

如果將UITableView子類化,則另一種可能性是將該方法子類化:

- (void)layoutSubviews {
    [super layoutSubviews];
    ....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM