2

以下のコードを試してみましたが、出力は常に 0.000000 です。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CellNotification";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    cell.textLabel.text = @"Test Test Test. I am a cell.";

    NSLog(@"%f", cell.textLabel.frame.size.width);

    return cell;
}

デフォルトの UITableViewCell の幅を知るにはどうすればよいですか? UITableViewCell の高さを設定する必要があるため、この情報が必要です

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
4

3 に答える 3

0

上記NSLogで使用しているのは、実際のセルではなく、セル内の textLabel の幅を求めています。

NSLog(@"%f",cell.frame.size.width);

さらに、グループ化されたテーブル スタイルを使用していない場合、セルの幅はテーブルの幅と同じになります。

編集:これが問題かどうかはよくわかりませんが、セルの幅を設定する方法を尋ねている場合は、その必要はありません。これはあなたのために処理されます。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"%@",NSStringFromCGRect(cell.textLabel.frame));
}

編集2:

これを変更してみてください:

if (cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    cell.textLabel.text = @"Test Test Test. I am a cell.";

これに:

if (cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

cell.textLabel.text = @"Test Test Test. I am a cell.";
于 2012-08-25T16:27:33.800 に答える
0

テーブルがグループ化されていない限り、セルの幅はテーブルの幅になります。グループ化されている場合は、わずかに小さくなります。

ただし、セル自体ではなく、テキストを表示するために使用しているラベルの幅が必要になる場合があります。

さらに注意が必要なのはheightForRow...、セルが作成される前にテーブル内のすべての行に対してメソッドが呼び出されるため、代わりに既知の値を使用する必要がある場合があることです。

于 2012-08-25T16:28:15.563 に答える
0

textLabel の幅をテストする必要があると思います: - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

于 2013-11-20T12:07:13.153 に答える