zoukankan      html  css  js  c++  java
  • <原>DTCoreText学习(二)-DTAttributedTextCell应用

    其实说是DTAttributedTextCell解析并显示html   应该是cell上的DTAttributedTextContentView解析并显示html

    首先先说一下DTAttributedTextCell 解析显示html的优点

    a.能够很好的实现cell的自适应高度,用webView也能实现自适应高度,但是逻辑复杂,效率不高,有加载延迟等等

    b.能够很好的进行内存管理,而webView显示html的时候  内存很难管理,而且不会释放内存

    c.加载速度快,效率高

    应用


    1.首先将DTCoreText添加到自己的工程,具体方法参照DTCoreText目录下的documentation文档

    2.向storyboard中拖入一个tableViewController 并将其class设为自己创建的子类,tableView 上面不需要cell  我门会在代码里面创建cell  

    3.在XXXtableViewController.m中添加代码:

     1 #pragma mark UITableViewDataSource
     2 
     3 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
     4     return 1;
     5 }
     6 
     7 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     8     return 4;
     9 }
    10 
    11 - (void)configureCell:(DTAttributedTextCell *)cell forIndexPath:(NSIndexPath *)indexPath
    12 {
    13     
    14     
    15     NSString *html = @"hello boy";
    16     
    17     [cell setHTMLString:html];
    18     
    19     cell.attributedTextContextView.shouldDrawImages = YES;
    20 }
    21 
    22 - (DTAttributedTextCell *)tableView:(UITableView *)tableView preparedCellForIndexPath:(NSIndexPath *)indexPath
    23 {
    24     static NSString *cellIdentifier = @"cellIdentifier";
    25 
    26     if (!cellCache)
    27     {
    28         cellCache = [[NSCache alloc] init];
    29     }
    30     
    31     // workaround for iOS 5 bug
    32     NSString *key = [NSString stringWithFormat:@"%d-%d", indexPath.section, indexPath.row];
    33     
    34     DTAttributedTextCell *cell = [cellCache objectForKey:key];
    35 
    36     if (!cell)
    37     {
    38         // reuse does not work for variable height
    39         //cell = (DTAttributedTextCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    40     
    41         if (!cell)
    42         {
    43                      //用代码创建cell
    44             cell = [[DTAttributedTextCell alloc] initWithReuseIdentifier:cellIdentifier accessoryType:UITableViewCellAccessoryDisclosureIndicator];
    45         }
    46         
    47         // cache it
    48         [cellCache setObject:cell forKey:key];
    49     }
    50     
    51     [self configureCell:cell forIndexPath:indexPath];
    52     
    53     return cell;
    54 }
    55 
    56 // disable this method to get static height = better performance
    57 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    58 {
    59     DTAttributedTextCell *cell = (DTAttributedTextCell *)[self tableView:tableView preparedCellForIndexPath:indexPath];
    60 
    61     return [cell requiredRowHeightInTableView:tableView];
    62 }
    63 
    64 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    65 {
    66     DTAttributedTextCell *cell = (DTAttributedTextCell *)[self tableView:tableView preparedCellForIndexPath:indexPath];
    67     
    68     return cell;
    69 }

    这样便能将html 显示到每个cell上  并且能自适应高度

  • 相关阅读:
    valueof这个万能方法,将string转换为int或者int转换为string都可以
    java的数组index[]方括号内是可以进行算数运算的
    项目工程的包package与文件夹的关系
    导入项目后下载jar包问题理解
    MySQL 5.6.19 二进制安装
    左右 android AES 所述机器的一部分 javax.crypto.BadPaddingException: pad block corrupted
    iOS_词典阵列 按key分组和排序
    Maven真——聚合和继承(于)
    机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型
    切点算法模板(Cut-vertex)
  • 原文地址:https://www.cnblogs.com/bucengyongyou/p/2667540.html
Copyright © 2011-2022 走看看