1

grouped に挿入する次の文字列がありますUITableViewCell

NSString = @"In 1879, Steve Dancy sells his New York shop and ventures west to explore and write a journal about his adventures. Though he's not looking for trouble, Dancy's infatuation with another man's wife soon embroils him in a deadly feud with Sean Washburn, a Nevada silver baron.\n\nInfuriated by the outrages of two hired thugs, the shopkeeper kills both men in an impulsive street fight. Dancy believes this barbarian act has closed the episode. He is wrong. He has interfered with Washburn's ambitions, and this is something the mining tycoon will not allow.\n\nPinkertons, hired assassins, and aggrieved bystanders escalate the feud until it pulls in all the moneyed interests and power brokers in Nevada. Can the former city slicker settle accounts without losing his life in the process?"

\n が含まれていることに注意してください。文字列に改行が含まれている場合、heightForRowAtIndexPath:メソッドで間違った高さが返されます。

#define FONT_SIZE 14.0f
#define CELL_CONTENT_MARGIN 14.0f

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; {
    CGSize constraint = CGSizeMake(CGRectGetWidth(self.view.frame) - (CELL_CONTENT_MARGIN * 2), 20000.0f);
    CGSize size = [self.giftProduct.productDescription sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
    CGFloat height = MAX(size.height, 44.0f);
    return height + (CELL_CONTENT_MARGIN * 2);
}

改行を含まないその他の文字列は正常に機能します。高さを計算するときに改行を考慮せず、高さが短すぎる理由はありますか?

ありがとう

4

1 に答える 1

0

投稿されたコードは正常に機能し、正しい結果が得られます。問題は別の場所にあるはずです。

多分あなたの境界self.view.frameとは異なる幅を持っていますか?UITableViewまたは、グループ化されたセルの余白やアクセサリ アイテムを補正するのを忘れていませんか? より具体的にするには、あなたUITableViewCellとレイアウトについてもっと知る必要があります。

UITableViewCell グループ化されたパディング

テキストがセルに使用され、textLabel.text高さが次のコードで計算されたセル:

#define FONT_SIZE 14.0f
#define CELL_CONTENT_MARGIN 10.0f  // label padding
#define CELL_MARGIN 10.0f  // cell margin for "grouped" style

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; {
    CGSize constraint = CGSizeMake(CGRectGetWidth(tableView.bounds) - (2 * CELL_MARGIN) - (CELL_CONTENT_MARGIN * 2), 20000.0f);
    CGSize size = [self.testString sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
    CGFloat height = MAX(size.height, 44.0f);
    return height + (CELL_CONTENT_MARGIN * 2);
}
于 2012-10-30T15:56:37.800 に答える