Skip to content

Latest commit

 

History

History
135 lines (96 loc) · 5.49 KB

TemplateScrolls_guide2.md

File metadata and controls

135 lines (96 loc) · 5.49 KB

TemplateScrolls 进阶教程

TemplateScrolls 入门教程

为了便于阅读,教程以 TTTableView 的用法为例,TTCollectionView 的用法基本上类似

统一配置、个性化配置

TTTableView 最主要的工作就是配置好 sectionscells 数组,就可以快速的渲染出视图了。

其中每一个 Cell 都是独立的,可以为不同的 Cell 设置不同的 类型、数据、尺寸

TTCellTemplate *cell1 = [TTCellTemplate new];
cell.viewClass = [TTMessageCell class];	// type 1
cell.data = model1;

// 支持链式语法
TTCellTemplate *cell2 = TTCellTemplate.make
.viewClassSet([TTRadioCell class])		// type 2
.dataSet(model2);

TTSectionTemplate *section = [TTSectionTemplate new];
[section.cells addObject:cell1];
[section.cells addObject:cell2];

每一个 Cell 将按照你所配置的类型、数据进行渲染

但是当一个 section 中所有 Cell 的类型一致时,可以通过配置 section 指定一个 统一的默认类型

TTSectionTemplate *section = [TTSectionTemplate new];
section.viewClass = [TTMessageCell class]; // 整个 Section 可以统一配置 Cell 类型

[section.cells addObject:model1]; // cells 可以直接存储 data
[section.cells addObject:model2];

自动刷新

TTTableView 的属性 sections 数组,在默认情况下,当你对配置数组进行改动操作时,TableView 会自动刷新视图。
当然你也可以禁用这样的逻辑,自行手动刷新视图。只需要关闭他们的 autoload 选项即可

tableView.autoload = NO;

有自己的BaseCell ?

也许你有自定义的 BaseTableCellBaseTableHeader,不便于继承 TTTableViewCellTTTableReusableView

为了让自定义的基类支持可配置,可以参考 TTTableViewCell 等类,遵循 TTCellProviderTTReusableViewProvider 这两个视图协议。
这样你的基类也就可以被支持用于 TTTableView 进行快速配置渲染

固定尺寸、自适应尺寸

不管 TableCell 还是 CollectionCell 都支持固定尺寸,支持使用约束自适应尺寸

  • 设置固定宽高,只需要显示指定 TTCellTemplatewidthheight 属性即可

     TTCellTemplate *cell = [TTCellTemplate new];
     cell.width = 100; // 对 tableView 无效
     cell.height = 40;
    
  • 动态计算宽高,不能设置 widthheight 属性

    • 对于 TableCell,需要 Custom TableCell 内部的子控件,在垂直方向上以及与边界充满明确的约束

    • CollectionCell 的使用方式稍微复杂些,大概步骤如下

       // 1. 设置大于 0 的预估尺寸
       TTCollectionView.layout.estimatedItemSize = CGSizeMake(100, 100);
       
       // 2. 与 Table 类似,Custom CollectionCell, 要在水平、垂直两个方向上,都有明确的约束
      

      详细步骤 参考这里

    注意:目前只有 Table 支持高度缓存,Collection 如果使用动态宽高,性能会降低

Section 单选多选

支持按照 Section 为单位,按组分别指定单选、多选逻辑

注意:使用该特性,必须要打开 tableView 的 allowsMultipleSelection

self.tableView.allowsMultipleSelection = YES; // 该属性必须为YES

TTSectionTemplate *section = [TTSectionTemplate new];
section.allowsMultipleSelection = YES;	// 该组是否多选
section.forceSelection = NO;			// 该组是否强制选择