//
// RootTableViewController.m
// Share
//
// Created by lanouhn on 15/1/20.
// Copyright (c) 2015年 niutiantian. All rights reserved.
//
#import "RootTableViewController.h"
#import "CustomTableViewCell.h"
#import "DetailViewController.h"
static NSString *cellIndentifer = @"cell";
@interface RootTableViewController ()
@end
@implementation RootTableViewController
- (void)dealloc
{
self.charString = nil;
self.secondString = nil;
self.custom = nil;
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.charString = @"只要有吃的,鱼就不停地吃?因为不知饥饱,鱼缸里的鱼因为喂食太多,给撑死了?只要有吃的,鱼就不停地吃?因为不知饥饱,鱼缸里的鱼因为喂食太多,给撑死了?只要有吃的,鱼就不停地吃?因为不知饥饱,鱼缸里的鱼因为喂食太多,给撑死了?";
self.secondString = @"只要有吃的,鱼就不停地吃?因为不知饥饱,鱼缸里的鱼因为喂食太多,给撑死了?只要有吃的,鱼就不停地吃?因为不知饥饱,鱼缸";
//注册cell
[self.tableView registerClass:[CustomTableViewCell class] forCellReuseIdentifier:cellIndentifer];
self.custom = [self.tableView dequeueReusableCellWithIdentifier:cellIndentifer];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIndentifer forIndexPath:indexPath];
if (indexPath.row % 2 == 0) {
cell.label.text = _charString;
[cell resetLabelFram:_charString];
} else {
cell.label.text = _secondString;
[cell resetLabelFram:_secondString];
}
//错误案例
// if (indexPath.row % 2 == 0) {
// self.tableView.rowHeight = [CustomTableViewCell heigehtCharString:_charString];
// } else {
// self.tableView.rowHeight = [CustomTableViewCell heigehtCharString:_secondString];
// }
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
//方法一
// if (indexPath.row % 2 == 0) {
// return [CustomTableViewCell heigehtCharString:_charString];
// } else {
// return [CustomTableViewCell heigehtCharString:_secondString];
// }
//方法二
if (indexPath.row % 2 == 0) {
self.custom.label.text = _charString;
} else {
self.custom.label.text = _secondString;
}
CGRect rect = [self.custom.label.text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, 0) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17]} context:nil];
return rect.size.height;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *detail = [[DetailViewController alloc] init];
[self.navigationController pushViewController:detail animated:YES];
[detail release];
}
@end
//
// CustomTableViewCell.m
// Share
//
// Created by lanouhn on 15/1/20.
// Copyright (c) 2015年 niutiantian. All rights reserved.
//
#import "CustomTableViewCell.h"
@implementation CustomTableViewCell
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)];
_label.numberOfLines = 0;
[self addSubview:_label];
[_label release];
}
return self;
}
+ (CGFloat)heigehtCharString: (NSString *)aString
{
CGRect rect = [aString boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, 0) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17]} context:nil];
return rect.size.height;
}
//重设label的高度
- (void)resetLabelFram: (NSString *)aString
{
CGRect rect = [aString boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, 0) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17]} context:nil];
_label.frame = CGRectMake(0, 0, self.bounds.size.width, rect.size.height);
}
@end