第一步
在ViewController里,需要有数据,即就是数组,
第二步
创建一个UITableViewCell
.h文件中定义两个属性 分别是 一个字符串(用来赋值在TableViewcell 的Label 的Text),一个浮点数记录TableViewcell的高
.m文件中 定义一个全局变量label
//实现这个方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
//重写这个方法
1 #import <UIKit/UIKit.h> 2 3 @interface CustomTableViewCell : UITableViewCell 4 /** 5 * 显示在cell上的字符串 6 */ 7 @property (nonatomic,copy)NSString * contentStr; 8 /** 9 * cell 高度的最大值 10 */ 11 @property (nonatomic,assign)CGFloat maxY; 12 @end
#import "CustomTableViewCell.h" @interface CustomTableViewCell () { UILabel *_label; } @end @implementation CustomTableViewCell - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { _label = [[UILabel alloc] init]; _label.font = [UIFont systemFontOfSize:15]; _label.numberOfLines = 0; // 换行样式 _label.lineBreakMode = NSLineBreakByCharWrapping; [self.contentView addSubview:_label]; } return self; } - (void)setContentStr:(NSString *)contentStr { _contentStr = contentStr; // 给label赋值 _label.text = contentStr; CGFloat width = [UIScreen mainScreen].bounds.size.width - 20; // 第一个参数:字体的大小 第二个参数:就是文字显示的区域最大值 第三个参数:文字换行的样式 CGSize size = [_label sizeThatFits:CGSizeMake(width, MAXFLOAT)]; // CGSize size = [contentStr sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(width, 999) lineBreakMode:NSLineBreakByCharWrapping]; _label.frame = CGRectMake(10, 5, width, size.height); // 获取cell的高度 _maxY = CGRectGetMaxY(_label.frame) + 10; } - (void)awakeFromNib { // Initialization code } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state }
第三步 展示数据
1 #import "ViewController.h" 2 #import "CustomTableViewCell.h" 3 4 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> 5 { 6 UITableView *_tableView; 7 NSArray *_array; 8 } 9 @end 10 11 @implementation ViewController 12 13 - (void)viewDidLoad { 14 [super viewDidLoad]; 15 [self getData]; 16 [self addTableView]; 17 } 18 19 - (void)getData 20 { 21 _array = @[@"",@"",@"",@""];//此处数据自己填吧 22 } 23 24 - (void)addTableView 25 { 26 _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; 27 _tableView.delegate = self; 28 _tableView.dataSource = self; 29 [self.view addSubview:_tableView]; 30 } 31 32 33 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 34 { 35 return _array.count; 36 } 37 38 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 39 { 40 NSString *ID = @"ID"; 41 CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; 42 if (cell == nil) { 43 cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; 44 } 45 46 cell.contentStr = _array[indexPath.row]; 47 // 设置cell的高度 48 tableView.rowHeight = cell.maxY; 49 return cell; 50 }
需要注意的是上面代码第48行,他在这里为TableViewcell 设置了Height
运行代码之后的结果是