2013-02-12 14 views
10

私は現在、テーブルビューにいくつかのつぶやきを表示するアプリで開発中です。ストーリーボード上では、私はプロトタイプセルを作成しました。このセルには、ツイストエントリの基本的なGUIコンセプトが含まれています。iOSはtableViewセルのテキストの高さを計算します

それはこのよう年頃になります:

++++++++++++++ 
++Username++++ 
++++++++++++++ 
++Tweet+++++++ 
++++++++++++++ 
++Time-Ago++++ 
++++++++++++++ 

今私は、次のコードを使用してセルの高さを計算するんだけど、何とかそれは失敗します。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; 
    NSString * tweetTextString = [currentTweet objectForKey: @"text"]; 
    CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(630, 1000) lineBreakMode: NSLineBreakByWordWrapping]; 

    float heightToAdd = 24 + textSize.height + 15 + 45; 
    if(heightToAdd < 90) { 
     heightToAdd = 90; 
    } 

    return heightToAdd; 
} 

ところで、奇妙なことがあります。私がテーブルビューをスクロールすると、アプリ全体がフリーズしているようです。これは正常ですか、何か間違っていますか?

+0

これは、通常、@凍結ではありません。外から、私は感情を持っている、これは2つの理由の1つに起因する可能性があります:1)あなたはこれにつながっているためにあまりにも多くの計算をしています。 2)フォーマットされた方法でテキストを表示するには、明らかに、行のテキストごとにある種のエンコーディングを使用している可能性があります。 –

+0

こんにちは、ありがとうございます。あなたが正しい。私は秒前のカウンタを更新するために[tableView reloadData]を毎秒呼び出しました。私はカウンターを外し、凍結が止まった。私はcellviewの内部でこれをやろうとしています。 :) –

+0

それは素晴らしいです。 :) –

答えて

13

あなたの問題のためにこれを試してみてください:

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

    NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; 

    NSString * tweetTextString = [currentTweet objectForKey: @"text"]; 

    CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(240, 20000) lineBreakMode: UILineBreakModeWordWrap]; //Assuming your width is 240 

    float heightToAdd = MIN(textSize.height, 100.0f); //Some fix height is returned if height is small or change it to MAX(textSize.height, 150.0f); // whatever best fits for you 

    return heightToAdd; 
} 

はそれがお役に立てば幸いです。

+0

'sizeWithFont'と' UILineBreakModeWordWrap'は非推奨です – aykutt

関連する問題