0

UICollectionViewLayoutをサブクラス化し、PrepareLayout,layoutAttributesForItemAtIndexPath,layoutAttributesForElementsInRectなどの必要なすべてのメソッドを実装しました。以前は高さUICollectionViewCellが固定されていましたが、要件が変更されたので、ラベルの高さごとにセルの高さのサイズを変更します。 UICollectionViewLayoutクラスのラベルテキストを取得するにはどうすればよいですか?私のcustomCollectionViewLayoutのLabelの高さはどうやって分かりますか?

どのようなタイプのヒントやヘルプがありがとうございます。

答えて

0

VCのUICollectionViewDelegateFlowLayout拡張でcellWidthsizeForItemAtIndexPathを定義するためにこれを使用しました。

デバイスの動的な高さと幅に応じてcellWidthと定義されています。

let cellWidth = UIScreen.mainScreen().bounds.width/7 - 1 

動的セル幅と高さをそれに応じて返す関数です。 同じ大きさの幅と高さが必要でした.7行7列が必要な場合は7で割ったので、1行でセルの必要性に応じて変更できます。

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context 

パラメータを使用する:あなたはこのNSStringのメソッドを使用することができますラベル、テキストとフォントの幅を知る

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    return CGSize(width: cellWidth, height: cellWidth) 
} 
+0

しかし、 'UICollectionViewLayout'ではなく' UICollectionViewLayout'をサブクラス化しました。 –

0

size - 幅の幅と同じでなければなりませんラベル、高さとしてCGFLOAT_MAXを置くことができます。

options - キーNSFontAttributeNameと辞書、あなたはこのラベル

contextのために使用しますフォントという値 - - あなたがここに

戻り値nilを渡すことができますちょうどNSStringDrawingUsesLineFragmentOrigin

attributesを使用CGRectになります。その中から高さを取るだけで、それがテキストを含むセル内のラベルの高さになります。

関連する問題