首页 > 代码库 > 自定义cell的高度

自定义cell的高度

//
//  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

 

自定义cell的高度