可変数の行 (セル) を持つ UITableView があります。これらの行の高さは一定です。私が望むのは、 UITableView の高さを行数に依存させることです。
また、 UITableView がセルを正確にラップするようにしたいので、下部にパディングはありません。したがって、セルの高さが 60 の場合、tableview は 1 つのセルで 60、2 つのセルで 120 などになります。
前もって感謝します!
可変数の行 (セル) を持つ UITableView があります。これらの行の高さは一定です。私が望むのは、 UITableView の高さを行数に依存させることです。
また、 UITableView がセルを正確にラップするようにしたいので、下部にパディングはありません。したがって、セルの高さが 60 の場合、tableview は 1 つのセルで 60、2 つのセルで 120 などになります。
前もって感謝します!
データ ソースにアクセスして、表示されるセルの数を見つけることができます。この数値に 1 行の高さを掛けると、テーブル ビュー全体の高さが得られます。テーブル ビューの高さを変更するには、フレーム プロパティを変更します。
プロパティにアクセスすることで、テーブル ビューの 1 行の (一定の) 高さにアクセスできrowHeight
ます。テーブル ビューに という配列のオブジェクトをmyArray
入力する場合、次のコードを使用できます。
CGFloat height = self.tableView.rowHeight;
height *= myArray.count;
CGRect tableFrame = self.tableView.frame;
tableFrame.size.height = height;
self.tableView.frame = tableFrame;
また、データ オブジェクトではなく、テーブル ビュー自体に問い合わせることで、テーブル ビューに含まれる行数を確認することもできます。このようなものが動作するはずです:
NSInteger numberOfCells = 0;
//finding the number of cells in your table view by looping through its sections
for (NSInteger section = 0; section < [self numberOfSectionsInTableView:self.tableView]; section++)
numberOfCells += [self tableView:self.tableView numberOfRowsInSection:section];
CGFloat height = numberOfCells * self.tableView.rowHeight;
CGRect tableFrame = self.tableView.frame;
tableFrame.size.height = height;
self.tableView.frame = tableFrame;
//then the tableView must be redrawn
[self.tableView setNeedsDisplay];
この UITableView デリゲート メソッドを実装します。セル行が作成されるたびに、各セルに高さが割り当てられます
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 60.0f;
}
このコードをviewDidLoadメソッドに実装します
[yourTableView setFrame:CGRectMake(yourTableView.frame.origin.x, yourTableView.frame.origin.y, yourTableView.frame.size.width,(60.0f*([yourArray count])))];
注:- yourArray は、クレートする行数のデータを含む NSArray です。
また
yourArray が値を動的に取得する場合は、値を取得した後にこのメソッドを呼び出します。
-(void)setHeightOfTableView
{
/**** set frame size of tableview according to number of cells ****/
float height=60.0f*[yourArray count];
[yourTableView setFrame:CGRectMake(yourTableView.frame.origin.x, yourTableView.frame.origin.y, yourTableView.frame.size.width,(60.0f*([yourArray count])))];
}
うまくいくことを願っています。ありがとう