<原>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上  并且能自适应高度

你可能感兴趣的:(attribute)