11

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

おおよそ次のようになります。

++++++++++++++
++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;
}

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

4

2 に答える 2

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;
}

それが役に立てば幸い。

于 2013-02-12T20:39:14.090 に答える
3

iOS 7 の回答を探している場合は、ここで見つけました。

iOS 7 sizeWithAttributes: sizeWithFont:constrainedToSize の置き換え

于 2014-02-16T00:43:45.277 に答える