UITableViewCell
et UITableViewHeaderFooterView
à l'aide de la disposition Autolayout
[ Xib
, StoryBoard
, Masonry
, SnapKit
, SDAutoLayout
...], prend en charge les écrans horizontaux et verticaux, gère automatiquement le cache de hauteur en interne et est compatible avec Swift. pod 'UITableViewDynamicLayoutCacheHeight'
pod install
#import <UITableViewDynamicLayoutCacheHeight/UITableViewDynamicLayoutCacheHeight.h>
pod 'UITableViewDynamicLayoutCacheHeight/Category'
Carthage est un gestionnaire de dépendances décentralisé qui construit vos dépendances et vous fournit des frameworks binaires. Pour intégrer UITableViewDynamicLayoutCacheHeight, ajoutez ce qui suit à votre fichier Cartfile.
github "liangdahong/UITableViewDynamicLayoutCacheHeight" ~> 5.2 . 0
clone https://github.com/liangdahong/UITableViewDynamicLayoutCacheHeight.git
]UITableViewDynamicLayoutCacheHeight
dans votre projet. Cell
est construit à l'aide de Xib
"Il prend également en charge la mise en page de code pur, à condition que la mise en page automatique soit utilisée."- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
. UITableView
a自动算高
et自动缓存高度
. L'effet est le suivant : Démo Swift Xib
Démo de mise en page de code pur Swift
Pour plus d'utilisation, veuillez vous référer à l'API du fichier UITableView+BMDynamicLayout.h.
Créez la cellule à l'avance, puis remplissez le contenu, puis forcez la mise en page, puis obtenez la vue avec le plus grand MaxY dans la cellule, puis prenez le MaxY de cette vue comme étant la hauteur requise par la cellule [保证Cell 中的View 的MaxY 最大的值即为Cell 需要的高度
Crucial], les opérations de sauvegarde et d'effacement du cache sont automatiquement gérées en interne.
Tout le monde devrait être bien conscient des défauts du calcul automatique élevé du système, tels que : pas de mise en cache, calculs répétés, sauts d'interface, et comme il défile et calcule dans des cellules avec des dispositions complexes, il y a quelques problèmes. Il ne prend en charge que iOS8+. et la mise en page doit remplir toute la cellule. Dans certains scénarios, la priorité doit être définie, sinon des conflits de contraintes seront signalés.
UITableView-FDTemplateLayoutCell J'ai utilisé ce framework au début, en même temps, la conception de l'API était également basée sur FDTemplateLayoutCell. Merci pour cela, mais il y a quelques bugs qui n'ont pas été résolus. remplir la cellule entière. Certaines scènes doivent définir des priorités lors de la mise en page, sinon des conflits de contraintes seront signalés, elles ont donc été migrées vers UITableViewDynamicLayoutCacheHeight.
Les défauts de UITableViewDynamicLayoutCacheHeight sont :
Sur la base de ce framework, une simple fonction WeChat Moments a été implémentée. Le code WeChat Moments a été écrit avec désinvolture il y a quelques années. Je ne suis pas prêt à l'ajuster. Si vous êtes intéressé, vous pouvez y jeter un œil.
UITableViewDynamicLayoutCacheHeight est publié sous la licence MIT Voir LICENSE pour plus de détails.