UITableViewCell
e UITableViewHeaderFooterView
usando layout Autolayout
[ Xib
, StoryBoard
, Masonry
, SnapKit
, SDAutoLayout
...], suporta telas horizontais e verticais, gerencia automaticamente o cache de altura internamente e é compatível com Swift. pod 'UITableViewDynamicLayoutCacheHeight'
pod install
#import <UITableViewDynamicLayoutCacheHeight/UITableViewDynamicLayoutCacheHeight.h>
pod 'UITableViewDynamicLayoutCacheHeight/Category'
Carthage é um gerenciador de dependências descentralizado que cria suas dependências e fornece estruturas binárias. Para integrar UITableViewDynamicLayoutCacheHeight, adicione o seguinte ao seu Cartfile.
github "liangdahong/UITableViewDynamicLayoutCacheHeight" ~> 5.2 . 0
clone https://github.com/liangdahong/UITableViewDynamicLayoutCacheHeight.git
]UITableViewDynamicLayoutCacheHeight
em seu projeto. Cell
é construído usando Xib
"Ele também suporta layout de código puro, desde que Autolayout seja usado."- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
. UITableView
自动算高
e自动缓存高度
. O efeito é o seguinte: Demonstração do Swift Xib
Demonstração de layout de código puro Swift
Para obter mais uso, consulte a API do arquivo UITableView+BMDynamicLayout.h.
Crie a célula com antecedência, em seguida, preencha o conteúdo, em seguida, force o layout, em seguida, obtenha a visualização com o maior MaxY na célula e, em seguida, considere o MaxY desta visualização como a altura exigida pela célula [para保证Cell 中的View 的MaxY 最大的值即为Cell 需要的高度
Crucial], as operações de salvamento e limpeza do cache são gerenciadas automaticamente internamente.
Todos devem estar cientes das deficiências do alto cálculo automático do sistema, como: sem cache, cálculos repetidos, saltos de interface, e por estar rolando e calculando em células com layouts complexos, ele só suporta iOS8 +, e o layout deve preencher toda a célula. No layout. Em alguns cenários, a prioridade precisa ser definida, caso contrário, serão relatados conflitos de restrição.
UITableView-FDTemplateLayoutCell Usei esse framework no início. Ao mesmo tempo, o design da API também foi baseado em FDTemplateLayoutCell. Também usei alguns materiais. Obrigado por isso, mas há alguns bugs que não foram resolvidos. preencher toda a célula. Algumas cenas precisam definir prioridades durante o layout, caso contrário, conflitos de restrição serão relatados, então eles foram migrados para UITableViewDynamicLayoutCacheHeight.
Os defeitos de UITableViewDynamicLayoutCacheHeight são:
Com base nesta estrutura, uma função simples do WeChat Moments foi implementada. O código do WeChat Moments foi escrito casualmente há alguns anos. Não estou pronto para ajustá-lo.
UITableViewDynamicLayoutCacheHeight é lançado sob a licença MIT. Consulte LICENSE para obter detalhes.