要想简单那必须用Xib,如果你是代码控也无所谓,只需要你的Cell使用Xib,其他的你依然用代码就可以。
如果不用Xib,又要label自适应高度,又要cell自适应高度,代码又臭又长。不然就用第三方,麻烦。
其实用自带的方法异常简单,简单到令人发指。。。
新建一个工程,在ViewController里写这些代码
#import "ViewController.h" #import "TestTableViewCell.h" @interface ViewController () <UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSArray *dataArray; @end @implementation ViewController static NSString *identifier = @"cell"; - (void)viewDidLoad { [super viewDidLoad]; self.tableView = [[UITableView alloc] init]; self.tableView.frame = CGRectMake(0, 0, 375, 667); self.tableView.backgroundColor = [UIColor colorWithRed:0.635 green:1.000 blue:0.905 alpha:1.000]; [self.tableView registerNib:[UINib nibWithNibName:@"TestTableViewCell" bundle:nil] forCellReuseIdentifier:identifier]; self.tableView.delegate = self; self.tableView.dataSource = self; [self.view addSubview:self.tableView]; self.tableView.estimatedRowHeight = 100; self.tableView.rowHeight = UITableViewAutomaticDimension; NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"央视报道显示,三家化工厂中,最大的化工厂叫常隆化工有限公司,紧接着的是长宇化工和华达化工。一名在常隆化工工作了30多年的老员工说,在他记载的生产日志上,像克百威、灭多威、异丙威、氰基萘酚这样的都属于是剧毒类产品。而厂里职工有时候为了省事,不光将有毒废水直接排出厂外,还将危险废物偷偷埋到了地下,对环境带来了很大隐患。", @"content", nil]; NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"诺普信不是别人,正是被外界称之为“农药第一股”的上市公司。", @"content", nil]; NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"新京报记者查询工商注册信息看到,江苏常隆化工有限公司注册资本30000万元,成立于1979年02月01日,股东之一是市公司深圳诺普信农化股份有限公司。", @"content", nil]; NSDictionary *dict4 = [NSDictionary dictionaryWithObjectsAndKeys:@"常隆化工是国家重点高新技术企业,但它的另一面却并不光鲜。2015年,江苏省靖江市一养猪场被曝“地下藏毒万吨”,其中就有常隆化工出来的化工垃圾;2014年12月,常隆化工旗下的常隆农化等6家企业因倾倒废酸污染河水,被江苏省高级人民法院判罚1.6亿多元的罚款。", @"content", nil]; NSDictionary *dict5 = [NSDictionary dictionaryWithObjectsAndKeys:@"常隆化工是国家重点高新技术企业,但它的另一面却并不光鲜。2015年,江苏省靖江市一养猪场被曝“地下藏毒万吨”,其中就有常隆化工出来的化工垃圾;2014年12月,常隆化工旗下的常隆农化等6家企业因倾倒废酸污染河水,被江苏省高级人民法院判罚1.6亿多元的罚款。", @"content", nil]; NSDictionary *dict6 = [NSDictionary dictionaryWithObjectsAndKeys:@"常隆化工是国家重点高新技术企业,但它的另一面却并不光鲜。2015年,江苏省靖江市一养猪场被曝“地下藏毒万吨”,其中就有常隆化工出来的化工垃圾;2014年12月,常隆化工旗下的常隆农化等6家企业因倾倒废酸污染河水,被江苏省高级人民法院判罚1.6亿多元的罚款。常隆化工是国家重点高新技术企业,但它的另一面却并不光鲜。2015年,江苏省靖江市一养猪场被曝“地下藏毒万吨”,其中就有常隆化工出来的化工垃圾;2014年12月,常隆化工旗下的常隆农化等6家企业因倾倒废酸污染河水,被江苏省高级人民法院判罚1.6亿多元的罚款。", @"content", nil]; self.dataArray = @[dict1, dict2, dict3, dict4, dict5, dict6, dict1, dict2, dict3, dict4, dict5, dict6]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TestTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath]; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.backgroundColor = [UIColor colorWithRed:0.678 green:0.640 blue:1.000 alpha:1.000]; NSDictionary *dict = self.dataArray[indexPath.row]; cell.label.text = dict[@"content"]; cell.label.numberOfLines = 0; return cell; } @end
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPathheightForRow这个方法不用写就行
self.tableView.estimatedRowHeight = 100; self.tableView.rowHeight = UITableViewAutomaticDimension;
cell.label.numberOfLines = 0;
只有.h中的这一行代码,一定要和Xib上的label关联哦。
@property (weak, nonatomic) IBOutlet UILabel *label;