テーブルの幅を2、3、5、...等しくする必要があります。目的は、2、3、5、...等しいサイズの正方形のサブビューを持つ表のセルを塗りつぶすことです。 (画像) もちろん、テーブルの高さはそれに依存します。iPadのUITableViewのサイズを調べる
これは、テーブルのサイズを決定する方法で、配置するイメージの数で割ります。 numberOfPicsPerRowメソッドは、ユーザーがテーブルの各行に表示することを選択したイメージの数の整数値を返します。
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.rowHeight = [self rowHeight];
}
すべてがiPhone上で正常に動作します:私は初めてのテーブルの行の高さを設定する場所
- (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];
}
です。ただし、iPadではtableView.boundsまたはview.boundsが返されます(width = 320、heiht = 372)。興味深いことに、この値は、デバイスを回転させたときに正しい値になります。 (幅= 768、高さ= 960)
誰でも説明がありますか? viewDidLoadはテーブルのサイズを決定するのに適切な場所ではありませんか?
あなたは右のそれをやっています。 'viewDidLoad:'ではビューがロードされたばかりで、サイズを含めてIBで作成したビューと同じです。次に、ビューがビュー階層に追加される前に、自動サイズ変更マスクに従ってリサイズされ、 'viewWillAppear:'が呼び出され、ビューが追加されます。そのため、 'viewDidLoad:'では、現在のビュー階層に対してディメンション*が正しいはずです。 – Pascal