0

UITableViewを作成し、次のコードをcellForRowAtIndexPath

static NSString *CellIdentifier = @"RootViewControllerCellIdentifier";

UITableViewCell *cell = [self.tableView queueReusableCellWithIdentifier:CellIdentifier];

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

    cell.selectionStyle = UITableViewCellSelectionStyleGray;    

}

// Set appropriate labels for the cells.
switch (indexPath.row) {
    case 0:
        cell.textLabel.text = @"Static Scenes";             
        **[cell.textLabel setFrame:CGRectMake(200, 20, 500,600)];**
        cell.imageView.image=[UIImage imageNamed:@"RunOptionsImage.png"];
        cell.imageView.frame=CGRectMake(15, 20, 55, 65);
        break;

上記のコードから理解できるように、静的シーンという名前のテーブルビューセルtextLabelがあります。

このコードでは[cell.textLabelsetFrame:CGRectMake(200、20、500,600)]; textLabelのフレームを設定する予定ですが、設定したフレームに合わせてサイズを変更していません。このcell.textLabel.frame=CGRectMake(200、20、500,600)コードも使用しました。テキストラベルのサイズを変更する良い方法を教えてもらえますか?

4

3 に答える 3

1

tableView:heightForRowAtIndexPath:テキストラベルのサイズを変更することに加えて、メソッドで適切な高さを返す必要もあります。そうしないと、レイアウトの変更は反映されません。

于 2011-06-15T21:45:44.633 に答える
0

UITableViewは、cellForRowAtIndexPathを要求した後、実際にセルをレイアウトすると思います。カスタマイズ可能なセルを使用する必要があるというドナルベインの答えには同意しますが、このデリゲートメソッド内のフレームを変更することで必要な機能を取得できると思います

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
于 2011-06-15T21:43:44.197 に答える
0

私が理解していることから、cellForRowAtIndexPathのセル内のセルコンテンツ以外は変更しないでください。しばらく前から私の質問の1つをチェックしてください。概要:

したがって、黄金律は次のとおりです。デキューした後は、セル構造を変更しないでください。構造を変更する必要がある場合は、異なるセルIDを使用してください。もちろん、セルをカスタマイズできるほど、それらを再利用する可能性が高くなります。

于 2011-06-15T21:39:53.843 に答える