美文网首页
TemplateScrolls 进阶教程

TemplateScrolls 进阶教程

作者: 广锅锅 | 来源:发表于2021-02-21 23:32 被阅读0次

    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;            // 该组是否强制选择
    

    相关文章

      网友评论

          本文标题:TemplateScrolls 进阶教程

          本文链接:https://www.haomeiwen.com/subject/ypwcfltx.html