0

ストーリーボードに設定されているセルにラベルの高さを設定しようとすると機能しますが、独自の .xib ファイルを持つラベルの高さを設定しようとすると機能しません。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {



    static NSString *CellIdentifier = @"MainArticleCell";

     MainArticleCell *cell = (MainArticleCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell.mainArticleTitleLabel.frame = CGRectMake(0, 0, 320, 30); // NOT WORKING
...

テキストを追加しようとすると機能するため、ラベルに正常に接続します。

cell.mainArticleTitleLabel.text = @"lorem ipsum text";

問題はどこだ?

更新 (説明の改善):

高さを設定する前に確認すると、IBに設定されているようで、コードで設定した後は設定したようですが、シミュレーターで視覚的には同じです。

NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height);
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48);
NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height);

更新 2

背景の色を変更することもできます(ただし、高さの設定はできません)

cell.mainArticleTitleLabel.backgroundColor = [UIColor redColor];
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48); // NOT WORKING 
4

2 に答える 2

0

問題は、あなたがそれを行うことができないということです

cellForRowAtIndexPath

heightForRowAtIndexPath でそれを行う必要があります

ここにコードサンプルがあります

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //in my case i get the text of the cell in an array
    NSString* theText =  [anArray objectAtIndex:indexPath.row];

    //then calculate the texte size with standard text
    CGSize textSize = [theText sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

    return textSize.height;
}

iOS 6 で属性付きテキストを使用する場合

CGRect rectSize = [theText boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:NULL];

そして戻る

return rectSize.size.height;

コードでこれを使用していますが、動的なセルの高さで機能しています。

編集

さまざまな解説を読みました。あなたの問題は、すでに行っているように heightForRowAtIndexPath の値を返すことにないため、私の答えは役に立たないようです。あなたの問題は、単一のxibではなく、ストーリーボードで機能していることです。その時点で私は何の助けにもなりません。

于 2012-11-07T17:23:15.490 に答える
0

何度も試行錯誤した後、私はその方法をあきらめ、ストーリーボードのTableViewを介してもう1つのセルを追加し、カスタムクラスを追加しようとしましたが、うまくいきました。

于 2012-11-07T20:58:49.223 に答える