2013-03-31 10 views
5

iOS6用のアプリケーションを開発します。私はいくつかのUILabelsといくつかのUIImageViewsを含むストーリーボードで初期化されたダイナミックセルを持っています。それらの高さはその場で変わるかもしれません。私はこのようcellForRowAtIndexPathでフレームを変更したときに、私の質問は:StoryboardからUILabelを読み込み、cellForRowAtIndexPathのフレームを変更できない

contentText = (UILabel *)[cell viewWithTag:TAG_TOPIC_CONTENT_TEXT]; 

CGFloat height = [[self.contentHeights objectAtIndex:[indexPath row]] floatValue]; 

contentText.frame = CGRectMake(CELL_TOPIC_CONTENT_X, CELL_TOPIC_CONTENT_Y, CELL_CONTENT_WIDTH, height); 

画面に表示contentText UILabelの高さは、まだ私はストーリーボードに初期化されているものと同じです。変更がうまくいかないようです。私は私のUITableView contenttextの高さをリフレッシュする場合、どのように問題を解決するためになるだろうか?前もって感謝します!

+0

heightForRowAtIndexPathを使用しない理由は? –

+0

@Bhargavi私の理解では、この関数は、セルの高さを変更するために使用されますが、私の質問はuilabelの高さを変更することです – Tate

答えて

0

tableView:willDisplayCell:forRowAtIndexPath:の方法でこれを試してください。これは、通常、UIのカスタマイズに使用されるメソッドです。お役に立てれば!

+0

tableView:willDisplayCell:forRowAtIndexPathでcontentTextのフレームを設定しようとしてからcontentText uilabel cellForRowAtIndexPath、およびフレームのログは正しいですが、まだ間違った位置が画面に表示されますが、何か不足していますか? – Tate

+0

真実ですが、これはこの問題では役に立ちません。 – Legoless

0

あなたは、あなたがのUITableViewCellのサブクラスを作成し、layoutSubviewsメソッドを実装する必要があり、セルのフレームのいずれかを変更する必要がある場合:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // modify frames here 
} 
+0

実行時にサイズが変更された場合、どうすればlayoutSubviewsに渡すことができますか?または、layoutSubviewsに実際の値を通知できる方法はありますか? – Tate

+0

固定フレームで試行したとき、起動時に動作しないように見えますが、フレームが表示後に期待どおりに変更されます。 – Tate

0

を、私はそのイライラを知っているが、私はまたのための解決策を見つけられませんでしたそれ。 代わりに、私は彼らが働くことを期待しているように物事を完了するための回避策を見つけました。 I

次に "自動レイアウト"(ストーリーボードのチェックボックスを)削除:また

[self.label setText:@"Labeltext"]; 
[self.label setBackgroundColor:[UIColor orangeColor]];// just to make the frame visible 
[self.label setNumberOfLines:0]; 
[self.label sizeToFit]; 

魔法のように動作しますが、:

self.label.frame = CGRectMake(0, 0, 50, 50); 

をだから、あなたドン場合AutoLayoutが必要です(それは私がチェックを外した最初のものです)。

+0

autolayoutがチェックされていないと別の画面サイズに適応できません – Tate

関連する問題