14

可変数の行 (セル) を持つ UITableView があります。これらの行の高さは一定です。私が望むのは、 UITableView の高さを行数に依存させることです。

また、 UITableView がセルを正確にラップするようにしたいので、下部にパディングはありません。したがって、セルの高さが 60 の場合、tableview は 1 つのセルで 60、2 つのセルで 120 などになります。

前もって感謝します!

4

5 に答える 5

28

データ ソースにアクセスして、表示されるセルの数を見つけることができます。この数値に 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];
于 2012-10-21T20:41:24.403 に答える
2

この 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])))];
}

うまくいくことを願っています。ありがとう

于 2013-05-08T06:51:12.287 に答える