RSSフィードに取り組んでおり、入力されるタイトル/説明情報に合わせてTableViewCellのサイズを変更することを検討しています。セルにすべてのテキストを切り取るのではなく、表示させたいのですが...誰か知っていますかこれを行うための良い方法、または良いチュートリアルを知っていますか?
ありがとう。
フィードアイテムデータを保持しているセルの高さを計算し、テーブルがtableView:heightForRowAtIndexPath:で要求したときにそれを返す必要があります。
UILabel
さらに、テキストを切り捨てないように言う必要があります。これについては、ラベルのテキストのサイズ設定のメソッドを確認してください
そのためにカスタムUITableViewCellを作成する必要があります。次に、.xibファイルで正しい自動サイズ設定パラメーターを設定します。次に、セルの.mファイルで、このような方法でlayoutSubviewsメソッドを実装する必要があります。
- (void) layoutSubviews
{
[super layoutSubviews];
CGRect newFrame = rssLabel.frame;
CGSize maximumLabelSize = CGSizeMake(rssLabel.frame.size.width,9999);
CGSize expectedLabelSize = [rssLabel.text sizeWithFont:tweetLabel.font constrainedToSize:maximumLabelSize lineBreakMode:rssLabel.lineBreakMode];
int height = expectedLabelSize.height;
newFrame.size.height = height;
rssLabel.frame = newFrame;
}
そして確かに、私はあなたがあなたの列の高さを計算するべきだと言うのを忘れました
最善のアプローチは、サブクラス化することUITableViewCell
です。このクラスでは、セルの高さを返すクラスメソッドを実装します。tableviewのdelegateメソッドtableView:heightForRowAtIndexPath:
でこのメソッドを呼び出し、テキストを渡します。NSString's
sizeWithFont
constrainedToSize
lineBreakMode
:メソッドを使用して高さを計算します。ラベルのプロパティnoOfLines
を0に設定します。これで準備完了です。
例えば:-
+(CGFloat)heightForText:(NSString *)value{
CGSize size = [value sizeWithFont:[UIFont systemFontOfSize:13] constrainedToSize:CGSizeMake(320, MAXFLOAT)];
if(size.height<MINIMUM_CELL_HEIGHT){
return MINIMUM_CELL_HEIGHT;
}else{
return size.height;
}
}