2011-01-06 18 views
2

私は2つの動的行を持つUITableViewを持っています。各行はUITableViewCellのサブクラスであり、nibからロードされます。私の行は動的なコンテンツが含まれているとして、私はすべてのサブビューを再配置するlayoutSubviewsを使用します。heightForRowAtIndexPath::メソッド動的UITableViewCellの設定高さ

- (void)layoutSubviews 
{ 
[super layoutSubviews]; 

CGFloat initialHeight = titleLabel.bounds.size.height; 
CGSize constraintSize = CGSizeMake(titleLabel.bounds.size.width, MAXFLOAT); 
CGSize size = [titleLabel.text sizeWithFont:titleLabel.font constrainedToSize:constraintSize]; 
CGFloat delta = size.height - initialHeight; 

CGRect titleFrame = titleLabel.frame; 
titleFrame.size.height += delta; 
titleLabel.frame = titleFrame; 

locationLabel.frame = CGRectOffset(locationLabel.frame, 0, delta); 
dayLabel.frame = CGRectOffset(dayLabel.frame, 0, delta); 
timeLabel.frame = CGRectOffset(timeLabel.frame, 0, delta); 
} 

問題は、私はテーブルビューのデリゲートののtableViewで高さを決定する方法を見つけることができないということです。

トリックは、nibからセルを読み込むので、titleLabel.bounds.size.widthが300 px(nibのように)で読み込まれた直後で、デバイスのタイプ(iPhone/iPad)と現在のタイプ方向やデバイスタイプの条件チェックを行わずに高さを計算することは不可能です。何か案は?

+0

最初にいくつかの回答を受け入れてください。 – mvds

+0

あなたは何も言うことはできません。どんな問題? – HiveHicks

答えて

0

あなたlayoutSubviewsは、セルのサイズを変更しませんので、以下の作業をする必要があります:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return cell.frame.size.height; 
} 

セルは、あなたがlayoutSubviewsself.frame = newFrameを設定することができます変更によるコンテンツにサイズを変更する必要がある場合。

また、setNeedsLayoutを呼び出すことによって、手動原因layoutSubviewsを呼び出すこともできます。

+1

私はすでに試してみましたが、残念なことに、layoutSubviewsはheightForRowAtIndexPathの後に呼び出されるため動作しません – HiveHicks

関連する問題