Autolayout
レイアウト [ Xib
、 StoryBoard
、 Masonry
、 SnapKit
、 SDAutoLayout
...] を使用したUITableViewCell
およびUITableViewHeaderFooterView
の高さの便利で高性能な自動計算であり、水平および垂直画面をサポートし、高さのキャッシュを内部で自動的に管理します。スイフトと互換性があります。 pod 'UITableViewDynamicLayoutCacheHeight'
pod install
#import <UITableViewDynamicLayoutCacheHeight/UITableViewDynamicLayoutCacheHeight.h>
pod 'UITableViewDynamicLayoutCacheHeight/Category'
Carthage は、依存関係を構築し、バイナリ フレームワークを提供する分散型依存関係マネージャーです。UITableViewDynamicLayoutCacheHeight を統合するには、Cartfile に次のコードを追加します。
github "liangdahong/UITableViewDynamicLayoutCacheHeight" ~> 5.2 . 0
clone https://github.com/liangdahong/UITableViewDynamicLayoutCacheHeight.git
]UITableViewDynamicLayoutCacheHeight
フォルダーの内容全体をプロジェクトにドラッグ アンド ドロップします。 Cell
Xib
使用して構築されています。「自動レイアウトが使用されている限り、純粋なコード レイアウトもサポートされます。」- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
のコードと一致します。 UITableView
自动算高
、自动缓存高度
。その結果は次のようになります。 Swift Xib デモ
Swift の純粋なコード レイアウトのデモ
詳しい使用方法については、UITableView+BMDynamicLayout.h ファイルの API を参照してください。
事前にセルを作成し、内容を入力してレイアウトを強制し、セル内で最大の MaxY を持つビューを取得し、このビューの MaxY をセルに必要な高さとします [したがって保证Cell 中的View 的MaxY 最大的值即为Cell 需要的高度
]保证Cell 中的View 的MaxY 最大的值即为Cell 需要的高度
Crucial]、キャッシュの保存とクリアの操作は内部で自動的に管理されます。
誰もがこのシステムの自動計算の欠点をよく知っているはずです。たとえば、キャッシュがない、計算が繰り返される、インターフェイスがジャンプする、複雑なレイアウトのセルでスクロールして計算するため、iOS 8 以降のみをサポートしている、などの問題があります。レイアウトはセル全体を埋める必要があります。一部のシナリオでは、優先順位を設定する必要があります。そうしないと、制約の競合が報告されます。
UITableView-FDTemplateLayoutCell 当初はこのフレームワークを使用しましたが、同時に API 設計もいくつかのマテリアルを使用しました。ただし、レイアウトにはまだ解決されていないバグがいくつかあります。一部のシーンはレイアウト中に優先順位を設定する必要があります。そうしないと制約の競合が報告されるため、それらは UITableViewDynamicLayoutCacheHeight に移行されました。
UITableViewDynamicLayoutCacheHeight の欠点は次のとおりです。
このフレームワークに基づいて、簡単な WeChat Moments 機能が実装されました。WeChat Moments のコードは、調整する準備ができていないので、興味がある方はご覧ください。
UITableViewDynamicLayoutCacheHeight は MIT ライセンスに基づいてリリースされています。詳細については、LICENSE を参照してください。