美文网首页
自定义不等高cell

自定义不等高cell

作者: 今夜子辰 | 来源:发表于2015-11-18 00:04 被阅读289次

<h1 id="toc_0">自定义不等高cell</h1>

<h1 id="toc_1">自定义不等高cell(纯代码)</h1>

<h2 id="toc_2">给模型增加frame数据</h2>

<ul>
<li>所有子控件的frame</li>
<li>cell的高度</li>
</ul>

<pre><code class="language-objc">@interface XMGStatus : NSObject
/**** 文字\图片数据 ****/
// .....

/**** frame数据 ****/
/** 头像的frame /
@property (nonatomic, assign) CGRect iconFrame;
// .....
/
* cell的高度 */
@property (nonatomic, assign) CGFloat cellHeight;
@end
</code></pre>

<ul>
<li>重写模型cellHeight属性的get方法</li>
</ul>

<pre><code class="language-objc">- (CGFloat)cellHeight
{
if (_cellHeight == 0) {
// ... 计算所有子控件的frame、cell的高度
}
return _cellHeight;
}
</code></pre>

<h2 id="toc_3">在控制器中</h2>

<ul>
<li>实现一个返回cell高度的代理方法

<ul>
<li>在这个方法中返回indexPath位置对应cell的高度</li>
</ul></li>
</ul>

<pre><code class="language-objc">/**

  • 返回每一行cell的具体高度
    */
  • (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    XMGStatus *status = self.statuses[indexPath.row];
    return status.cellHeight;
    }
    </code></pre>

<ul>
<li>给cell传递模型数据</li>
</ul>

<pre><code class="language-objc">- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"tg";
// 访问缓存池
XMGStatusCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

// 设置数据(传递模型数据)
cell.status = self.statuses[indexPath.row];

return cell;

}
</code></pre>

<h2 id="toc_4">新建一个继承自<code>UITableViewCell</code>的子类,比如XMGStatusCell</h2>

<pre><code class="language-objc">@interface XMGStatusCell : UITableViewCell
@end
</code></pre>

<h2 id="toc_5">在XMGStatusCell.m文件中</h2>

<ul>
<li>重写<code>-initWithStyle:reuseIdentifier:</code>方法

<ul>
<li>在这个方法中添加所有需要显示的子控件</li>
<li>给子控件做一些初始化设置(设置字体、文字颜色等)</li>
</ul></li>
</ul>

<pre><code class="language-objc">/**

  • 在这个方法中添加所有的子控件
    */
  • (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
    // ......
    }
    return self;
    }
    </code></pre>

<h2 id="toc_6">在XMGStatusCell.h文件中提供一个模型属性,比如XMGTg模型</h2>

<pre><code class="language-objc">@class XMGStatus;

@interface XMGStatusCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) XMGStatus *status;
@end
</code></pre>

<h2 id="toc_7">在XMGTgCell.m中重写模型属性的set方法</h2>

<ul>
<li>在set方法中给子控件设置模型数据</li>
</ul>

<pre><code class="language-objc">- (void)setStatus:(XMGStatus *)status
{
_status = status;

// .......

}
</code></pre>

<h2 id="toc_8">重写<code>-layoutSubviews</code>方法</h2>

<ul>
<li>一定要调用<code>[super layoutSubviews]</code></li>
<li>在这个方法中设置所有子控件的frame</li>
</ul>

<pre><code class="language-objc">/**

  • 在这个方法中设置所有子控件的frame
    */
  • (void)layoutSubviews
    {
    [super layoutSubviews];

    // ......
    }
    </code></pre>

<h1 id="toc_9">自定义不等高cell(Autolayout)</h1>

相关文章

  • 自定义不等高cell

    自定义不等高cell 自定义不等高cell(纯代码) 给模型增加frame数据 所有子控件的frame cell...

  • 02-UITableview(3)

    0605非自定义等高 表格刷新 1. 01-自定义非等高cell01-xib 用故事板(sb)创建的cell既不用...

  • 自定义 tableView 的 cell

    - 自定义等高的 cell 一、storyboard 自定义 cell 1.创建一个继承自 UITableView...

  • cell的等高与不等高

    自定义等高的cell 等高的cell 所有cell的高度是一样的 纯代码创建 frame 1,新建一个继承自UIT...

  • 自定义等高的cell

    自定义等高的cell 等高的cell 所有cell的高度是一样的 纯代码创建 frame 1,新建一个继承自UIT...

  • UITableViewCell根据内容显示不同的高度问题

    1.iOS8及以后,通过XIb自定义不等高cell: 下载 // 告诉tableView所有cell的真实高...

  • 5.等高的cell设置

    1.内容大纲: 2.纯代码,添加子控件 项目初始准备: 创建自定义的cell: 3.自定义等高的cell--xib...

  • 等高Cell

    一、自定义Cell1、等高cell 代码 很古老的方法: 利用autoLayout xib加载xib要通过手动加载...

  • UITableView(自定义cell)(1)

    自定义等高cell frame方法 在XMGTgCell.m文件中 重写-initWithStyle:reuseI...

  • UITableView(自定义cell)(2)

    自定义不等高cell frame方法 给模型增加frame数据 所有子控件的frame cell的高度 重写模型c...

网友评论

      本文标题:自定义不等高cell

      本文链接:https://www.haomeiwen.com/subject/nmflhttx.html