利用iOS8新特性計算cell的實際高度


在計算cell的實際高度是 我們一般是通過計算frame  拿到最底部一個控件的最大Y值從而的到cell 的高度  算來算去  比較麻煩  

其實,iOS8已經提供了直接通過Cell高度自適應的方法了,根本不用計算Cell高度,就可以搞定不等高Cell  這個方法即對系統cell有效 也對通多xib創建的cell有效:
 
方法:設置tableView的估算Cell高度&rowHeight值為自動計算模式
    self.tableView.estimatedRowHeight = 100;  //  隨便設個不那么離譜的值
    self.tableView.rowHeight = UITableViewAutomaticDimension;

注意:::不能實現heightForRow代理方法!

代碼:

#import "TESTTableViewController.h"
#import "TESTTableViewCell.h"
@interface TESTTableViewController ()
@property (nonatomic,strong) NSArray *contentAry;
@end

@implementation TESTTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.tableView.estimatedRowHeight = 100;  //  隨便設個不那么離譜的值
    self.tableView.rowHeight = UITableViewAutomaticDimension;
    self.contentAry = @[@"哈哈哈",@"哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈",@"啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈",@"哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈"];
}
#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 4;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ID = @"cell";
    
    //利用系統自帶cell類型
//    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
//    if (cell == nil) {
//        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
//        
//    }
//    cell.textLabel.numberOfLines = 0;
//    cell.textLabel.text = self.contentAry[indexPath.row];
//    return cell;
    
    //通過xib構建cell
    TESTTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell == nil) {
        NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"TESTTableViewCell" owner:nil options:nil];
        cell = [nibs firstObject];
    }
    cell.contentText.numberOfLines = 0;
    cell.contentText.text = self.contentAry[indexPath.row];
    return cell;
}
@end

效果圖:

通過xib創建的cell:                                                

系統自帶cell類型:

 

參考資料:簡書  demo(提取碼:a75d)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM