自定义非等高cell01-xib

UITableView中有很多情况下cell的高度是不固定的,这时候cell的高度取决于内容的多少,今天介绍几个方法来达到自定义非等高cell的效果。

LMTestCell.h中加入方法:

/** 返回cell 高度*/
-(CGFloat)cellHeight;

LMTestCell.m中对应方法:

-(CGFloat)cellHeight
{
    if (self.pictureView.hidden) {
        return CGRectGetMaxY(self.contentLabel.frame)+10;
    }else
    {
        return CGRectGetMaxY(self.pictureView.frame)+10;
    }
}

ViewController.m中对应方法:

#import "ViewController.h"
#import "LMTestCell.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
{
    UITableView *_weiboTableView;

}
/* 存放所有cell的高度 */
@property(nonatomic,strong)NSMutableDictionary *hegihts;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];

    _weiboTableView = tableView;
    _weiboTableView.delegate = self;
    _weiboTableView.dataSource = self;
    [self.view addSubview:_weiboTableView];

}
-(NSMutableDictionary *)hegihts
{
    if (!_hegihts) {
        _hegihts = [NSMutableDictionary dictionary];
    }
    return _hegihts;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    LMTestCell *cell = [LMTestCell cellWithTableView:tableView];
    [cell setContent:indexPath.row];
    NSLog(@"%zd",cell.cellHeight);
    //存储高度
    self.hegihts[@(indexPath.row)] = @(cell.cellHeight);
    return cell;
}
#pragma mark - 01-自定义非等高cell-重复高,效率低
//-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//{
//    LMTestCell *cell = [LMTestCell cellWithTableView:tableView];
//    [cell setContent:indexPath.row];
//    //强制布局
//    [cell layoutIfNeeded];
//    return cell.cellHeight;
//}
#pragma mark - 02-自定义非等高cell
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //cellForRowAtIndexPath:获取已经在tableivew中显示的cell。
    CGFloat height = [self.hegihts[@(indexPath.row)] floatValue];
    return height;
}
/**
 返回每一行的估计高度
 只返回了估计高度,那么就会先调用tableView:cellForRowIndexPath:方法创建cell,在调用tableView heightForRowAtIndexPath:方法获取cell的真实高度。
 */
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 250;
}
@end
时间: 2024-10-29 19:11:11

自定义非等高cell01-xib的相关文章

iOS边练边学--自定义非等高的cell

一.使用xib或者storyboard自定义非等高的cell实现方式差不多,这里简单介绍一下通过xib文件实现的方法 <1.1>创建一个继承自UITableViewCell的子类,比如ChaosWeiboCell <1.2>在模型中增加一个cellHeight属性,用来存放对应的cell的高度 #import <UIKit/UIKit.h> // 这里修改成UIKit框架 @interface ChaosWeibo : NSObject // 模型类 /** 正文 */

自定义非等高cell02-xib

在model中加入一个属性,cell的高度. LMTestModel.h #import <UIKit/UIKit.h> #import "LMTestModel.h" @interface LMTestCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *contentLabe

【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.com/han1202012/WheelViewDemo.git -- CSDN : http://download.csdn.net/detail/han1202012/8208997 ; 博客总结 : 博文内容 : 本文完整地分析了 WheelView 所有的源码, 包括其适配器类型, 两种回调接

iOS开发——笔记篇&amp;关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结

关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 1 /******************************************************************************/ 2 一:简单plist读取 3 4 1:定义一个数组用来保存读取出来的plist数据 5 @property (nonatomic, strong) NSArray *shops; 6 7 2:使用懒加载的方

IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果

拖个button继承一下  几行代码 就搞定 自用效果还行 IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果,布布扣,bubuko.com

源码-020501-自定义非等高cell-storyboard

// // XMGStatusesViewController.m // 备课03-不等高的cell-非代码 #import "XMGStatusesViewController.h" #import "XMGStatus.h" #import "XMGStatusCell.h" @interface XMGStatusesViewController () @property (strong, nonatomic) NSArray *statu

源码-0203-06-自定义非等高cell-xib

// // XMGStatusesViewController.m // 备课03-不等高的cell-非代码 #import "XMGStatusesViewController.h" #import "XMGStatus.h" #import "XMGStatusCell.h" @interface XMGStatusesViewController () @property (strong, nonatomic) NSArray *statu

如何确定非分区表高水位虚高

如何确定非分区表高水位虚高: 一般认为分配给表使用的数据块空间远大于表实际占用存储空间时,我们就认为表的高水位虚高,涉及该表的查询sql存在不必要的消耗,需要进行优化. 通过比较数据占用和分配数据块的空间比对来确定哪些表的高水位虚高: sys用户执行(如果数据库支持statistics_level配置,一般9.2之后都支持): SQL>exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO(); 再执行: SELECT a.owner || '.' || a

Android 修改源码自定义SwipeRefreshLayout样式——高仿微信朋友圈下拉刷新

修改源码自定义SwipeRefreshLayout样式——高仿微信朋友圈下拉刷新 原文地址:https://www.cnblogs.com/zhujiabin/p/8194996.html