FLEXTableView.m 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // FLEXTableView.m
  3. // FLEX
  4. //
  5. // Created by Tanner on 4/17/19.
  6. // Copyright © 2019 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXTableView.h"
  9. #import "FLEXSubtitleTableViewCell.h"
  10. #import "FLEXMultilineTableViewCell.h"
  11. @interface UITableView (Private)
  12. - (CGFloat)_heightForHeaderInSection:(NSInteger)section;
  13. @end
  14. @implementation FLEXTableView
  15. - (CGFloat)_heightForHeaderInSection:(NSInteger)section {
  16. CGFloat height = [super _heightForHeaderInSection:section];
  17. if (section == 0 && self.tableHeaderView && !@available(iOS 13.0, *)) {
  18. return height - self.tableHeaderView.frame.size.height + 8;
  19. }
  20. return height;
  21. }
  22. - (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
  23. {
  24. self = [super initWithFrame:frame style:style];
  25. if (self) {
  26. [self registerCells:@{
  27. self.defaultReuseIdentifier : [FLEXTableViewCell class],
  28. self.subtitleReuseIdentifier : [FLEXSubtitleTableViewCell class],
  29. self.multilineReuseIdentifier : [FLEXMultilineTableViewCell class],
  30. }];
  31. }
  32. return self;
  33. }
  34. - (void)registerCells:(NSDictionary<NSString*,Class> *)registrationMapping
  35. {
  36. [registrationMapping enumerateKeysAndObjectsUsingBlock:^(NSString *identifier, Class cellClass, BOOL *stop) {
  37. [self registerClass:cellClass forCellReuseIdentifier:identifier];
  38. }];
  39. }
  40. - (NSString *)defaultReuseIdentifier
  41. {
  42. return @"kFLEXTableViewCellIdentifier";
  43. }
  44. - (NSString *)subtitleReuseIdentifier
  45. {
  46. return @"kFLEXSubtitleTableViewCellIdentifier";
  47. }
  48. - (NSString *)multilineReuseIdentifier
  49. {
  50. return kFLEXMultilineTableViewCellIdentifier;
  51. }
  52. @end