2011-01-19 5 views
5

2つのUITextViewとその中に3つのUILabelsを持つUITableViewCellを設計する正しい方法を見つけることを基本的に試みています。 2つのUITextViewには動的コンテンツがあり、そのサイズは実行時まで決定できません。iOs UITextViewsとUILabelsの高さがコンテンツによって決まるようにUITextViewsとUILabelsを設定する方法

私は、UITextViewsの高さを実行時にロードされたコンテンツに基づいて再計算するさまざまな方法を試しましたが、非常に面倒ではありますが、私はうまく機能していますが、UILabelsそれらの下のxibで。

UITextViewsの新しいサイズを計算した後、実際にはすべてのUILabelのy座標を再計算する必要がありますか?単純に、xibの要素に新しいサイズに基づいて要素を「プッシュ」させる方法がありますか?

アプリケーション全体が高さと座標を計算するコードで構成されないように、複数の動的テキストビューでUITableViewCellを構成する正しい方法は何ですか?

また、同じUITableViewCellに複数の動的UITextViewを配置すべきでないという答えはありますか?

答えて

2

私はパディングにある

tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

機能

CGSize labelSize = [self.comments sizeWithFont:[UIFont fontWithName:@"Verdana" size:17.0] 
               constrainedToSize:CGSizeMake(280.0f, MAXFLOAT) 
                lineBreakMode:UILineBreakModeWordWrap]; 
    return labelSize.height + 20; 

20にその高さを計算するために、セルのために、このようなものを使用しています。

あなたが上記のようなすべてのセルを持っている場合は、その中のUIView要素でUITableViewCellのクラスを作成するよりも、

1

iOSには、少なくとも私が考えることができるフローレイアウトエンジンはありません。 ラベルがUITableViewCellの下部にある場合は、UILabelのautoresizingMaskマスクプロパティをUIViewAutoresizingFlexibleBottomMarginに設定して、UILabelsがその下にアンカーするようにすることができます。これは、コントロール全体に合わせてUITableViewCellのサイズを調整したことを前提としています。それ以外の場合は、これを処理する最善の方法は、ラベルのy座標を再計算することです。

0

ビューは、サブビューの1つを任意のテキストに合わせてサイズ変更できるように、必要に応じて新たに拡大したサブビューに合わせて親ビューのサイズを変更することができるように、このような振る舞いをUIViewのカテゴリとして追加すると便利です。

http://blog.carbonfive.com/2009/07/10/resizing-uilabel-to-fit-text/

+0

ありがとうございます。サイズ変更されたラベルがそのラベルの下のラベルに滲み出る場所をどのように開発したらよいでしょうか?それで、同じビューのすべてのラベルのy座標を再計算する必要がありますか? – JohnRock

+0

単一のサブビューのサイズを変更するだけであれば、バネを使用して親ビューの上部を基準にしてサイズ変更可能なビューを配置し、他のすべてのサブビューを下部に相対的に配置し、親ビューのサイズをlable/textフィールドが大きくなります。それが可能ではない場合は、サブビューのサイズを変更した後にそのサブビューを再レイアウトする必要があります。おそらく単に '-layoutSubviews'を呼び出すだけですが、ビューをどのように構築し管理するか、そしてこの変更をアニメーション化するかどうかによって異なります。 – Jonah

関連する問題