自定义等高的cell(代码创建frame)

【QQ聊天界面-创建自定义Cell Objective-C语言】 阅读详情
//
//  tgCell.h


#import <UIKit/UIKit.h>

@class tgModel;

@interface tgCell : UITableViewCell
/**
 *  团购模型数据
 */
@property(nonatomic,strong)tgModel *model;

/**
 *  创建一个cell
 */
+ (instancetype)cellWithTableView:(UITableView *)tableView;
@end
//
//  tgCell.m


#import "tgCell.h"
#import "tgModel.h"

@interface tgCell()
@property (weak, nonatomic) UIImageView *iconView;
@property (weak, nonatomic) UILabel *titleLabel;
@property (weak, nonatomic) UILabel *priceLabel;
@property (weak, nonatomic) UILabel *buyCountLabel;

@end

@implementation tgCell

// 1.在initWithStyle:reuseIdentifier:方法中添加子控件
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        UIImageView *iconView = [[UIImageView alloc] init];
        [self.contentView addSubview:iconView];
        self.iconView = iconView;
        
        UILabel *titleLabel = [[UILabel alloc] init];
        [self.contentView addSubview:titleLabel];
        self.titleLabel = titleLabel;
        
        UILabel *priceLabel = [[UILabel alloc] init];
        priceLabel.textColor = [UIColor orangeColor];
        [self.contentView addSubview:priceLabel];
        self.priceLabel = priceLabel;
        
        UILabel *buyCountLabel = [[UILabel alloc] init];
        buyCountLabel.textAlignment = NSTextAlignmentRight;
        buyCountLabel.font = [UIFont systemFontOfSize:14];
        buyCountLabel.textColor = [UIColor lightGrayColor];
        [self.contentView addSubview:buyCountLabel];
        self.buyCountLabel = buyCountLabel;
    }
    return self;
}

// 2.在layoutSubviews方法中设置子控件的frame
- (void)layoutSubviews
{
    [super layoutSubviews];
    
    CGFloat contentH = self.contentView.frame.size.height;
    CGFloat contentW = self.contentView.frame.size.width;
    CGFloat margin = 10;
    
    CGFloat iconX = margin;
    CGFloat iconY = margin;
    CGFloat iconW = 100;
    CGFloat iconH = contentH - 2 * iconY;
    self.iconView.frame = CGRectMake(iconX, iconY, iconW, iconH);
    
    // titleLabel
    CGFloat titleX = CGRectGetMaxX(self.iconView.frame) + margin;
    CGFloat titleY = iconY;
    CGFloat titleW = contentW - titleX - margin;
    CGFloat titleH = 21;
    self.titleLabel.frame = CGRectMake(titleX, titleY, titleW, titleH);
    //    CGRectMake(titleX, titleY, titleW, titleH);
    
    // priceLabel
    CGFloat priceX = titleX;
    CGFloat priceH = 21;
    CGFloat priceY = contentH - margin - priceH;
    CGFloat priceW = 70;
    self.priceLabel.frame = CGRectMake(priceX, priceY, priceW, priceH);
    
    // buyCountLabel
    CGFloat buyCountH = priceH;
    CGFloat buyCountY = priceY;
    CGFloat buyCountX = CGRectGetMaxX(self.priceLabel.frame) + margin;
    CGFloat buyCountW = contentW - buyCountX - margin;
    self.buyCountLabel.frame = CGRectMake(buyCountX, buyCountY, buyCountW, buyCountH);
}

// 3.重写模型的set方法
- (void)setModel:(tgModel *)model
{
    _model = model;
    
    //设置数据
    self.iconView.image = [UIImage imageNamed:model.icon];
    self.titleLabel.text = model.title;
    self.priceLabel.text = [NSString stringWithFormat:@"¥%@",model.price];
    self.buyCountLabel.text = [NSString stringWithFormat:@"%@人已购买",model.buyCount];
}

+ (instancetype)cellWithTableView:(UITableView *)tableView
{
    static NSString *ID = @"cell";
    tgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    
    if (cell == nil) {
        cell = [[tgCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    
    return cell;
}

@end



ScrollView + 自定义cell 组合(实现复用) ScrollerView + 自定义cell 组合(实现复用) 阅读详情

相关推荐

别再被SpringerLink虐了!手把手教你搞定LaTeX源文件提交(附正确文件顺序和类型选择)

本文详细解析了SpringerLink投稿系统中LaTeX源文件提交的常见问题与解决方案,包括文件打包、类型选择和顺序排列等关键步骤。通过实战经验,帮助科研人员避开隐形陷阱,一次性完成LaTeX提交,提升投稿效率。特别针对`.bst`和`.cls`文件的正确处理提供了专业指导。

weixin_42522964的博客 441

自定义等高 Cell

1、介绍 1.1 代码自定义 cell(使用 frame) 创建一个继承自 UITableViewCell 的子类,比如 BookCell1。 在 initWithStyle:reuseIdentifier: 方法中。 添加子控件。 设置子控件的初始化属性(比如文字颜色、字体)。 在 layoutSubviews 方法中设置子控件的 frame。 需要提供一个模型属性,重写模型...

diaochuanzhi7826的博客 100

Matlab2024a安装教程

点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。

qq_64359046的博客 4793

纯代码自定义cell的过程

两个模型类:         数据模型类 --- cell中显示的数据         frame模型类 --- 数据模型以及cell中子控件的frame及cell的高度     一个cell子类 利用MVC 在cell子类中做:  (V) 三件事情分开来做:创建子控件、数据的显示、子控件frame的设定 1. 提供一个类方法快速获取cell独享

shiguqing9的博客 369

群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书

群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书

wojuzi的博客 2447

无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制

无刷直流电机矢量控制,采用转速、电流双环控制,电流环dq解耦,d轴采用id=0控制,q轴采用转速外环。采用滑模观测器(SMO),根据电压电流信息进行电机位置角度动态估算,模型可直接运行,转速和角度跟踪精度较高。 本文整理了该方法的基本原理,介绍了在MATLAB/Simulink中的建模和仿真过程,最后附上完整的模型文件。 一、基本原理 滑模观测器(下文简称SMO)是基于滑模变结构控制方法的一种状态观测器。其针对无刷直流电机转子位置估算的实现过程如下。 假设采用矢量控...

Forster-C的博客 6864

通过代码自定义cell(cell的高度不一致)的步骤

1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 Ø 添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中) Ø 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片) 3.提供2个模型 Ø 数据模型: 存放文字数据\图片数据 Ø frame模型: 存放数据模型\所有子控件的frame\cell的高度 4.cell拥有一个frame模型(不要直接拥有数

金刚龙123的专栏 432

长安车机破解后能干啥?分享我的UNI-K车机安装第三方应用与优化体验实录

本文详细记录了长安UNI-K车机破解后的实用玩法与深度优化指南,包括安装第三方应用、导航体验升级、影音系统改造及系统美化等。通过工具箱和升级技巧,车主可以大幅提升用车体验,解锁更多隐藏功能。

weixin_33217202的博客 401

ios开发 使用纯代码自定义UItableviewcell

ios开发UI篇—使用纯代码自定义UItableviewcell 一、实现效果   二、使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到content

九天揽月 3301

生成对抗网络——CGAN(代码+理解)

CGAN(Conditional Generative Adversarial Network)模型是一种 深度学习模型,属于生成对抗网络(GAN)的一种 变体。它的 基本思想是通过 训练生成器和判别器两个网络,使生成器能够生成与给定条件 相匹配的 合成数据,而判别器则 负责区分真实数据和 生成数据。相比于GAN它引入了条件信息(y),使得生成器可以生成与给定条件相匹配的合成数据,从而提高了生成数据的可控性和针对性。

CXDNW的博客 1万+

UDS诊断服务基础详解之二19服务

本文主要介绍UDS统一诊断服务的19 01服务,包含状态位和故障码的解析以及19 01服务的具体说明

车载网络小D的博客 1万+

UITableView使用<1>之自定义UITableViewCell

对于UITableViewCell,系统自身提供了几种样式: UITableViewCellStyleDefault, // Simple cell with text label and optional image view UITableViewCellStyleValue1, // Left aligned label on left and right aligned l

闪星的博客 438

恒玄BES调试笔记-BES2500如何打开COMPEXP

打开Compressor and expander会占用资源,这个根据个人项目需求而定吧!打开方法,以及参数修改如下: config\best2300a_ibrt_anc\target.mk SPEECH_RX_COMPEXP ?= 1 apps\audioplayers\bt_sco_chain_cfg_default.c #if defined(SPEECH_RX_COMPEXP) /*****************************************************

leezs的博客 705

墨珞随笔 - IOS - 自定义UITableView的cell - 李江辉

使用Xcode通过代码自定义UITableView的cell(cell不等高) 具体步骤:   1、新建一个继承自UITableViewCell的类   2、重写initWithStyle:reuseIdentifier:方法     1> 添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中);     2>进行子控...

weixin_30699831的博客 117

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

自定义cell的高度(新浪微博)

重点分析: 1.一个控件X轴的最大宽度(可以根据内容多少设置)/**CGRectGetMaxX(_iconF),代表_iconF控件x轴最大宽度,加上10个像素间距,适用于设置_iconF后面跟着的一个控件*/ CGFloat nameX = CGRectGetMaxX(_iconF) + 10;2.一个控件y轴最高(可以根据内容多少设置) CGFloat textY = CGRe

不要让你的梦想 只停留在梦里 516

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

oc学习之路----通过代码自定义cell

需求背景:由于tableView中每一个cell的数据与布局都不一样,故不能用xib实现功能,这是用代码写自定义cell就有必要了。 步骤      1.新建一个继承自UITableViewCell的类   2.重写initWithStyle:reuseIdentifier:方法     Ø添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到conten...

weixin_30877227的博客 95

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

转自: ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一、实现效果   二、使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和fr

robinson_911的专栏 983

UI基础第十四弹:UItableview使用代码自定义团购页面

一、实现效果   二、使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次,

程序员_R的专栏 579

os开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

一、实现效果   二、使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片)

越越博客 479

iOS开发之UI基础--纯代码自定义UItableviewcell实现一个简单的微博界面布局

纯代码自定义UItableviewcell实现一个简单的微博界面布局 一、使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中) 进行子控件

痞子Lee_专栏 1363

iOS开发UI篇—以微博界面为例使用纯代码自定义cell程序编码全过程(三·完结)...

一、需要改进的地方 还需改进的地方:cell的高度需要根据每条微博的数据进行动态设置。 设置cell的高度可以有两种方式,一种是通过rowheight属性来进行设置,一种是通过代理来进行设置。通过属性设置适用于每行的高度一致,使用代理适用于每行的高度不一致的情况。 二、实现思路 在这个应用中,每个cell的高度是根据内容来确定的,所以在这里我们通过代理来设置cell的高度。 获取到图片最...

weixin_30682127的博客 66

修改IB中view的frame

问题案例:       自定义cell用xib定义,cell子视图中某个label的内容由网络获取,因为这个label加了边框,在获取数据后需要调整宽度(用sizeTofit方法即可)。 实测发现,这个label有时候宽度确实根据内容变化了,边框显示良好,但有时候还是IB里定义的宽度。 原因:       网络异步获取数据,有时候在viewDidAppear之前得到数据,这时候设置

ding_min的博客 474
上一篇: 自定义等高的cell(xib)
下一篇: 自定义等高的cell(代码Autolayout)
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值