首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在具有最大高度动态高度的UITableViewCell中添加UITextView

,可以通过以下步骤实现:

  1. 创建一个自定义的UITableViewCell子类,例如CustomCell。
  2. 在CustomCell类中添加一个UITextView作为子视图。
  3. 在CustomCell类中重写layoutSubviews方法,设置UITextView的frame以适应单元格的大小。
  4. 在UITableViewDataSource的cellForRowAtIndexPath方法中,使用CustomCell类来创建和返回单元格。
  5. 在UITableViewDelegate的heightForRowAtIndexPath方法中,根据UITextView的内容动态计算单元格的高度。

下面是一个示例代码:

代码语言:txt
复制
import UIKit

class CustomCell: UITableViewCell {
    var textView: UITextView!
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        textView = UITextView()
        textView.isScrollEnabled = false
        textView.font = UIFont.systemFont(ofSize: 14)
        contentView.addSubview(textView)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        let padding: CGFloat = 8
        textView.frame = CGRect(x: padding, y: padding, width: contentView.bounds.width - 2 * padding, height: contentView.bounds.height - 2 * padding)
    }
}

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    var tableView: UITableView!
    var data: [String] = ["Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium."]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView = UITableView(frame: view.bounds, style: .plain)
        tableView.dataSource = self
        tableView.delegate = self
        tableView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")
        view.addSubview(tableView)
    }
    
    // UITableViewDataSource methods
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
        cell.textView.text = data[indexPath.row]
        return cell
    }
    
    // UITableViewDelegate method
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        let text = data[indexPath.row]
        let font = UIFont.systemFont(ofSize: 14)
        let width = tableView.bounds.width - 16 // Assuming 8px padding on both sides
        let height = text.height(withConstrainedWidth: width, font: font)
        return height + 16 // Assuming 8px padding on top and bottom
    }
}

extension String {
    func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
        let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
        let boundingBox = self.boundingRect(with: constraintRect, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
        return ceil(boundingBox.height)
    }
}

这个示例代码演示了如何在具有最大高度动态高度的UITableViewCell中添加UITextView。UITextView会根据文本内容自动调整高度,并且单元格的高度也会根据UITextView的高度动态计算。你可以根据自己的需求进行修改和定制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android如何获取view布局高度与宽度详解

前言 可能很多情况下,我们都会有activity获取view 尺寸大小(宽度和高度需求。面对这种情况,很多同学立马反应:这么简单问题,还用你说?你是不是傻。。...当我们 onCreate() 方法获取某个 View 组件宽度和高度,直接调用 getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight...OnPreDrawListener 监听事件 视图将要绘制时调用该监听事件,会被调用多次,因此获取到视图宽度和高度后要移除该监听事件。...UI 事件队列会按顺序处理事件, setContentView() 被调用后,事件队列中会包含一个要求重新 layout message,所以任何 post 到队列 Runnable 对象都会在...总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn支持。

5.6K10

MyLayout&TangramKit 重大升级!

比如一些界面中有父视图尺寸由子视图尺寸来确定;还比如UIScrollView为了能实现滚动需要根据添加到里面的子视图来调整contentSize尺寸;又比如某些UITableViewCell高度动态...3.UITableViewCell高度自适应 UITableViewCell要实现高度自适应,需要在UITableViewDelegate方法: -(CGFloat)tableView:(UITableView...然后UITableViewCell派生类视图代码布局处或者-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath...UITableViewCell高度自适应 UITableViewCell要实现高度自适应,需要在UITableViewDelegate方法: -(CGFloat)tableView:(UITableView...然后UITableViewCell派生类建立一个根布局视图,这个根布局视图作为子视图添加到contentView中代码如下: //假设根布局视图是一个垂直线性布局视图。

2K20

iOS学习——tableview带编辑功能cell键盘弹出遮挡和收起问题解决

框架官方文档中就有提到要避免将HUD添加具有复杂视图层次结构某些UIKit视图(如UITableView或UICollectionView),UITableViewController和UICollectionViewController...翻译:你可以在任何视图或窗口上添加HUD。 然而,避免将HUD添加具有复杂视图层次结构某些UIKit视图(如UITableView或UICollectionView)是一个好主意。...言归正传,下面就说回到我们要解决问题,UITableViewcell,系统自带UITableViewCell格式没有自带UITextField或UITextView这种可以编辑区域,而这种类型...下面的流程就是UITextField或UITextView整个编辑过程详细流程步骤: 成为第一响应者之前,文本框调用其代理textFieldShouldBeginEditing:  方法来允许或阻止其第一响应者...  在前面的2.1UITextField或UITextView点击之后详细流程分析我们知道,点击文本之后弹出键盘时会发送一个UIKeyboardWillShowNotification通知,

3.8K80

UITableViewCell系列之(一)让你cell支持二次编辑

关于UITableViewCell一些别具一个样式和用法。很早就想系统写一篇文章,文章囊括开发UITableViewcell一些花样用法和奇葩用法。...结果还是以简短方式分享出来,因为没有太多时间思考文章脉络和条理。这只是一个开头,关于UITableViewCell一些特殊用法,我还会继续在这个系列更新。...每个开发者采用方式不同,有的开发者直接以modal/push方式present出一个控制器,把tableViewCell上内容传递到被modal/push控制器UITextView上,UITextView...做同学,可能还不忘弹出UITextView时给tableView添加一个蒙版或者模糊效果以突出重点,提高用户体验度。以上两种方式算是中规中矩。...此处称为frame1 根据frame1获取点击那一行cell cell上添加一个和label同样尺寸、同样坐标的UITextView,以让UITextView正好遮盖住label 把cell上内容显示到

7.8K40

ERP最新动态Winshuttle如何实现SAPERP系统附件添加

通常,企业在运用ERP系统进行订单管理同时,上传真实订单用于比对参考。SAP订单管理,配有附件上传功能,可添加附件有多种形式,如销售/采购订单、PDF文件、发票、注册证明等。...点击可查看大图 点击可查看大图 Winshuttle 添加附件流程: 由于SAP附加文件过程不能被Studio记录,用户可以使用Mapper 【Add File Attachments Rows...1)使用GOS,可以将业务文件存储一个存档表,这样主表就不会受到大型附件影响。...Log 显示附件添加成功与否结果 2)Attachment Location 即附件位置,填写所需添加附件PC文件路径及文件。...3)Order Number 即附件所属订单编号 若Order Number = Sales Document(或其他T-code录制过程中所使用到编号) 则说明附件添加在了相同订单;若不相等,

2.7K20

输入框高度随输入内容变化

实现这个效果关键点只有两点: 获取正在输入内容UITextView占用了多少行 让UITextView动态改变大小 一开始,为了解决第一个问题,我一直考虑怎么获取换行事件,发现只用捕捉\n输入即可...所以感觉这个思路太麻烦 对于第一点,有一个方便计算方法,就是获取UITextView内容高度比上UITextView字体高度,即可得到当前行数。...这里有一个技巧,那就是不要用UITextViewbound.size.height获取其高度,因为这个获取高度跟你输入文字总高度并没有任何关系。...,就可以计算当前有多少行文字了, - (void)textViewDidChange:(UITextView *)textView 代理方法中计算高度即可。...下面放部分代码: 我把输入框和一些其他组件封装为一个控件,声明代理: @protocol EssayEditDelegate @optional - (void) onTextViewLineCountChangeTo

2.5K10

TableView优化之高度缓存

首先,给UITableView添加category是因为为了实现高度缓存,我方案是计算高度时候就模拟数据填充,从而计算出该cell高度,所以,tableView应该有填充数据和计算高度方法。...= 本例我们用runtime做了些什么呢? 使用runtime动态为category绑定属性 之前老司机说过,category是不能添加属性。...那我又要为其添加两个标识符,只能使用runtime去动态绑定了,属性列表里面通过runtime添加上这个属性,那我就可以使用这个属性了。...然后.m添加两个属性setter、getter方法 @implementation UITableViewCell (HeightCacheCell) #pragma mark ---setter....h添加一个属性,是我们刚才用来存储高度那个类一个实例。

2.3K30

基于Android布局动态添加view两种方法(总结)

一、说明 添加视图文件时候有两种方式:1、通过xml文件定义layout;2、java代码编写 二、前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下...View view = inflater.inflate(R.layout.block_gym_album_list_item, null); 3.添加视图文件 三、步骤 1、通过xml文件定义layout...implements OnClickListener{ private Context mContext; private TextView mTv_title; private String title = "动态添加布局...View view.addView(tv2);//将TextView 添加到子View return view; } private int calculateDpToPx(int padding_in_dp...switch (v.getId()) { case R.id.sbtn_navback: this.finish(); break; default: break; } } } 以上这篇基于Android布局动态添加

5.7K21

iOS开发之新浪微博山寨版代码优化

为了减少代码重复编写把cell相同部分抽象成父类,然后继承。不过也是结合着storyboard做优化时转发View和评论View相似,于是就做了个重用。...原来代码上就把cell代码进行了重写,所以本篇作为补充,关键代码还得看之前博客。   1.第一种cell,只有微博内容,没有图片,效果如下: ?   ...ImageTableViewCell.m代码如下:(只把要添加东西加上即可,是不是代码少多了) @interface ImageTableViewCell() @property (strong,...textLabel高度 18 NSString *text = dic[@"text"]; 19 NSDictionary * dic1 = @{NSFontAttributeName...由上面的界面可以清楚看到转发和评论界面是基本一致,所以我们代码可以用一个ViewController来控制这个视图,通过点击不同按钮来拼接不同url.

67390

iOS 面试策略之系统框架-UIScrollView及其子类

一般为了用户体验,我们会引入 navigationController,然后导航栏右上角添加 edit 按钮来让用户普通和编辑模式中切换。 6....9.说说实现预加载方法 关键词:#网络传输 #无限滚动 #Threshold 实际开发,列表经常需要随着滑动而不停展示新内容。滑动到一定程度后,我们就需要发送网络请求,以获得新数据。...解决方法是将 Threshold 变成一个动态值,随着数据增长而增长。...由于我们 prepare() 已经完成相应计算,此时只需返回对应 indexPath 特定属性即可。...为了避免循环引用,最好方法就是我们 UICollectionViewLayout 子类定义一个 protocol,然后让 ViewController 实现这个protocol,来完成高度获得

2.6K21

IOS开发之新浪围脖

之前博客中有一篇“IOS开发之自动布局显示网络请求内容” ,用网络请求是模拟微博请求,博文内容也是模拟,接下来要用到上一篇博文知识:根据请求内容来动态设置Cell高度。...2.上面的cell是我们自定义cell,需要关联两个UITableViewCell类,然后Cell对象中进行控件配置和赋值,其中一个自定义Cell关键代码如下,TableView我们只需要调用...需求难点:       1.cell高度根据本博文和转发博文多少而改变,就是cell中有两部分内容高度是变化,需要用代码来动态控制其高度。...我们根据博文文字多少来用代码动态改变垂直约束,至于如何用代码改变约束值,请参照以前博客IOS开发之绝对布局和相对布局(屏幕适配),在这就不做过多论述,下面主要讲如何给我们cell添加多个按钮...* cell, int buttonTag);        b.Cell添加CellBlock类型变量,用于接收回调 1 @property (strong, nonatomic) CellBlock

1.2K50

iOS_UITableView性能优化

(DISPATCH_QUEUE_PRIORITY_DEFAULT, ^{ // 异步绘制 }); // 缓存一切可以缓存 // 默认高度44 定高cell最好指定高度, 减少不必要计算 self.tabelView.rowHeight...= 88; // 减少视图数目 // 减少多余绘制操作 // 不给cell动态添加subView 用hidden属性 控制显示/隐藏 // 网络请求, 图片加载 开启多线程 // willDisplayCell...可以将数据绑定放在cell显示出来之后再执行 以提高效率 // 缓存不便于重用view (存model里) // --------   自适应高度   -------- // 尽量提高计算效率, 已计算过高度需要进行缓存...*)cell forRowAtIndexPath:(NSIndexPath *)indexPath { } - (UITableViewCell *)tableView:(UITableView *)...cell) {     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier

59220

iOS-UI控件之UITableView(二)- 自定义不等高cell

计算所有子控件frame、cell高度 } return _cellHeight; } 控制器 实现一个返回cell高度代理方法 在这个方法返回indexPath位置对应cell...高度 /** * 返回每一行cell具体高度 */ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:...子类,比如XMGStatusCell @interface XMGStatusCell : UITableViewCell @end XMGStatusCell.m文件 重写-initWithStyle...:reuseIdentifier:方法 在这个方法添加所有需要显示子控件 给子控件做一些初始化设置(设置字体、文字颜色等) /** * 在这个方法添加所有的子控件 */ - (instancetype...(nonatomic, strong) XMGStatus *status; @end XMGTgCell.m重写模型属性set方法 set方法给子控件设置模型数据 - (void)setStatus

932110

iOS开发中行高灵活可变UITableView性能优化

iOS开发中行高灵活可变UITableView性能优化 一、UITableView构建原理         新闻类,电商类等应用,应用着大量图文混排视图,表视图UITableView,...开发通常会遇到一些十分复杂界面,而这些界面cell高度都是需要通过请求到数据动态改变,每个cell都要写复杂尺寸计算代码十分令人心烦。...iOS7系统之后,UITableView类增加了一个estimatedRowHeight属性,顾名思义,这个属性是设置UITableViewCell大约行高值。...那么现在问题来了,如何才能让cell正确计算自己高度,这就要使用到Autolayout了,无论是通过xib文件创建cell还是代码创建cell,若想让cell自动正确计算出自身高度,必须添加足够压力约束...所谓足够压力,是指UITableViewCellcontentView上、下、左、右必须被内部控件约束所撑满,需要注意,cell上视图必须添加在contentView上,否则计算会出现问题。

1.9K20

「 UITableView 入门 」新人解决列表 Cell 高度自适应,UITableViewCell 高度自适应

一、前言 我们写列表时候,经常出现每一个 Cell 高度不一样情况,但是 iOS 这边是是太不智能了 比起隔壁 android RecyclerView ,人家可以自动更具每一项高度,来进行伸缩变化...,后续文章我会挤时间,专门搞一篇 UITableView 异步请求加观察者模式文章来给大家分享 3.2 编写列表 item - UITableViewCell 要让 cell 随自身内容大小而变化高度...属性为 true 最后是,这个 cell 不能通过简单 frame 设置大小,而是需要通过 NSLayoutConstraint 来动态给定 首先这里我先提供下最终实现代码再逐个给大家分析: import...我们注意到,子控件 view 是需要添加到 cell contentView 上,而非直接添加到 self 上 另一点就是之前说,需要把 view translatesAutoresizingMaskIntoConstraints...同时欢迎大家点赞或者关注支持,因为这是我持续输出最大动力~

2K10
领券