zoukankan      html  css  js  c++  java
  • 利用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)

  • 相关阅读:
    nginx简介(轻量级开源高并发web服务器:大陆使用者百度、京东、新浪、网易、腾讯、淘宝等)(并发量5w)(一般网站apache够用了,而且稳定)
    js中json数据简单处理(JSON.parse()和js中嵌套html)
    js中json法创建对象(json里面的:相当于js里面的=)
    SimpleDateFormat使用特定的解释
    eclipse+webservice开发实例
    android在Canvas使用drawBitmap画一幅画
    SoC嵌入式软件架构设计II:没有MMU的CPU虚拟内存管理的设计和实现方法
    SRM 590 DIV1
    菜鸟教程工具(三)——Maven自己主动部署Tomcat
    activity-alias使用
  • 原文地址:https://www.cnblogs.com/gaoxiaoniu/p/5341408.html
Copyright © 2011-2022 走看看