[英]iOS/iPhone/iPad: Determine the size of an object lying on a business card
[英]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.