2011-02-05 10 views
0

私はheightForRowAtIndexPathとsizeWithFontを使ってセルの高さを計算しています。 3行または4行のテキストの後に、テキストを含むラベルがセルのビューの上部および下部を超えて拡大します。 0〜3行のものはどれも大きくなり、適切に縮小します。セルのグラフィックスを通過するUITableViewセルのコンテンツ

セルが高さにハードキャップを持つ場所が見つかりません。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    NSArray *array = [sectionsArray objectAtIndex:indexPath.section]; 
    NSDictionary *dictionary = [array objectAtIndex:indexPath.row]; 

    id key = [[dictionary allKeys] objectAtIndex:0]; 
    NSString *keyString = [NSString stringWithFormat:@"%@", key]; 
    NSString *keyContents = [NSString stringWithFormat:@"%@", [dictionary objectForKey:key]]; 
    CGFloat height = 44; 

    if ([keyString isEqualToString:@"Notes"]) { 
     if ([keyContents length] > 0) { 
      CGSize constraint = CGSizeMake(320.0f - (10.0f * 2), 20000.0f); 
      height = 20 + [keyContents sizeWithFont:[UIFont boldSystemFontOfSize:15] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap].height; 
     } 
    } 

    NSLog(@"Height of %@ with content %@ is %f", keyString, keyContents, height); 

    if (height <= 44) { 
     return 44; 
    } 
    else { 
     return height; 
    } 

} 

ここには、大きすぎるエントリの外観を示すスクリーンショットがあります。 Clipped cell view

+0

明らかなものを破棄しようとしています。あなたの実装は正しい高さを返していますか?UITableViewはそれを無視していますか?つまり、あなたはNSLogによって印刷された正しい値を見ていますか? –

答えて

1

制約の幅が大きすぎます。実際には、テキストラベルがテーブルビューのセルスタイルの選択により、それよりも小さい場合は、320を引いて10を引いたものとみなしています。推測すると、200または180の拘束幅を試してみてください(あるいは、実験やラベルの境界線を印刷した値を試してみてください)。

+0

それはまさにそれでした。私はそれが見えていないことを知っていた。ありがとうございました! – Chuck

関連する問題