具有多行 UILabel 的自定义 Tableview 单元格需要动态高度

2023-12-02

我使用 Interface Builder 创建了一个自定义 TableView 单元。它看起来是这样的:

IB Custom Table Cell

对于描述标签,我需要将其自动换行,因此我将其设置为:

Settings for Description Label

在我的 SettingsPageViewController 中,我重写了以下表视图方法:

@implementation SBSettingsViewController
{
    NSArray *settingHeaders;
    NSArray *settingDescriptions;
}
- (void)viewDidLoad {
[super viewDidLoad];

[self setupLeftMenuButton];
// Do any additional setup after loading the view from its nib.
settingHeaders = [NSArray arrayWithObjects:@"Label Header 1",@"Label Header 2",nil];
settingDescriptions = [NSArray arrayWithObjects:@"Two line description Two line description Two line description ",@"One Line Description",nil];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [settingHeaders count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"SettingsTableCell";

SettingsTableViewCell *cell = (SettingsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SettingsTableCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}

cell.settingsHeaderLabel.text = [settingHeaders objectAtIndex:indexPath.row];
cell.settingsDescriptionLabel.text = [settingDescriptions objectAtIndex:indexPath.row];

cell.settingsDescriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.settingsDescriptionLabel.numberOfLines = 0;
CGRect appFrame=[[UIScreen mainScreen] bounds];
cell.settingsDescriptionLabel.preferredMaxLayoutWidth = appFrame.size.width - 15;

[cell.settingsDescriptionLabel sizeToFit];
[cell.settingsDescriptionLabel setNeedsDisplay];
[cell layoutIfNeeded];

return cell;
}

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
    [tableView setSeparatorInset:UIEdgeInsetsZero];
}

if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
    [tableView setLayoutMargins:UIEdgeInsetsZero];
}

if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    [cell setLayoutMargins:UIEdgeInsetsZero];
}
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 85;
}

结果页面如下所示:

enter image description here

如您所见,第一个表格视图单元格的描述标签不会自动换行。它就这样切断了。我怎样才能让它包裹起来?

另外,我希望动态调整 Tableview 单元格高度。我尝试将 heightForRowAtIndexPath: 更改为 UITableViewAutomaticDimension 但这只是让它看起来非常奇怪:

enter image description here

如何为 1 行描述标签稍短的行调整表格视图高度?

感谢您的帮助!


给出标题标签顶部、前导、尾随到超级视图和底部(垂直)到描述标签的约束。 描述标签>前导、尾随和下边距与超级视图相同。

现在设置标题标签高度修复和描述标签使多行(行= 0)

对于 viewDidLoad 中设置的表视图

_tableView.estimatedRowHeight = 100.0;
_tableView.rowHeight = UITableViewAutomaticDimension;

让我知道这个是否奏效...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多行 UILabel 的自定义 Tableview 单元格需要动态高度 的相关文章

  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c
  • 获取 Cocoa 中文件的类型

    我成功找到了指定文件的扩展文件类型 JPEG 图像 TIFF 图像等 但我正在寻找更通用的东西 可以对 大类别 中的文件进行分类 如图像 moovies 文本文件等 有没有办法在可可 或 Objective C 中实现这一点 感谢您的帮助
  • 无边框 NSButton 单击时变为灰色

    我正在使用三个带有图像集的 NSButton 制作一个小应用程序 这些按钮没有边框也没有背景 但是 当我单击按钮时 它会变成灰色矩形 我怎样才能解决这个问题 谢谢 让你的按钮类型为NSMomentaryChangeButton myBtn
  • UICollectionView 列的垂直偏移

    右图是我试图实现的目标 Does anyone know how I could achieve this on a two column UICollectionView I m able to discern my columns by
  • 我无法捕获 WKWebView 的屏幕截图

    我正在尝试捕获 WKWebView 的屏幕截图 但我的方法无法正常工作 它返回纯色 就好像图层树为空一样 而它似乎适用于其他视图 UIImage screenshot UIImage screenshot UIGraphicsBeginIm
  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • 在两个数字之间设置 UILabel 文本动画?

    我是 iPhone 和 Mac 编程新手 之前为 Windows 开发过 我有一个问题 我如何制作动画text的财产UILabel两个数字之间 例如从5 to 80以 Ease Out 风格 是否可以与CoreAnimation 我已经在谷
  • 如何比 CGContextStrokePath 更快地渲染线条?

    我正在使用 CGContextStrokePath 绘制约 768 个点的图表 问题是 每一秒我都会得到一个新的数据点 从而重新绘制图表 目前 这个已经很繁忙的应用程序占用了 50 的 CPU 图形绘制是在UIView 中的drawRect
  • 多个 ViewController(containerView?childView?viewController 的实例?)

    我需要在另一个视图之上添加一个新视图 带有 ViewController 用户与这个新视图交互了一段时间 然后我想将其删除 在旧版本的 Xcode 中 我可以将其添加为子视图 我现在收到 EXC BAD ACCESS 错误 我不希望添加的视
  • 在 Objective-C 中获取对象的属性数组

    Objective C 中是否可以获取对象所有属性的数组 基本上 我想做的是这样的 void save NSArray propertyArray self propertyNames for NSString propertyName i
  • iPhone ImageView序列动画

    嘿 尝试将一个简单的 png 序列动画放入我的应用程序中 我在 IB 中放置了第一个框架 并将图形动画出口连接到它 序列中有 54 个 png 名称为 Comp 1 0000 png 到 Comp 1 00053 png 这是我的代码 vo
  • 防止 UITableView 滚动到某个点以下

    如何让 UITableView 允许在某个索引行上方滚动 但在低于某个点时阻止滚动 例如 如果我有第 1 行到第 100 行 其中在给定时间视图中仅出现 5 行 我希望允许用户在第 1 50 行之间滚动 但在第 50 行可见时阻止进一步向下
  • NSPredicate 使用 RLMResults 作为参数

    我试图通过使用 NSPredicate 进行过滤来获取两组 Realm 数据 并且是不同的对象 之间的差异 但存在一个我无法理解的错误 我的代码 RLMResults topStories KFXTopStory allObjects NS
  • 如何相对于包含视图大小定位子视图?

    我希望能够将我的子视图从顶部定位到超级视图大小的 25 NSLayoutConstraint topPositionConstraint NSLayoutConstraint constraintWithItem containerView
  • RxSwift、RxCocoa 和 UITableview

    我在使用 RxSwift 实现 UITableView 时遇到问题 我尝试使用以下代码将模型数组的可观察对象绑定到表项 models bind to self tableView rx items cellIdentifier Cell c
  • swift 3.0 中的 Sha 256 加密语法错误

    func SHA256 gt String let data self data using String Encoding utf8 let res NSMutableData length Int CC SHA256 DIGEST LE
  • 后台模式下的 AVSpeechSynthesizer

    我无法获取 iOS 7AVSpeechSynthesizer当我的 iOS 应用程序处于后台模式时工作 我添加了 应用程序播放音频 应用程序支持的后台模式的关键 但我仍然无法让它工作 我还研究了创建一个AVMutableCompositio
  • 如何在 iOS 5 中使用 Embed Segue?

    iOS 6 引入了 Embed Segue 允许在 Storyboard 中使用自定义容器控制器 有没有办法在 iOS 5 上复制这个 这里的挑战是子视图控制器的视图通常要添加为父视图控制器的某些容器视图的子视图 因为你不能随机进行序列UI

随机推荐

  • 是否可以更改 Wicket 活动指示器的颜色?

    情况 我正在与 Wicket s 合作IndicatingAjaxButton 我在黑色背景的页面上设置了按钮 当用户按下按钮时 按钮的活动指示灯会熄灭并旋转 直到系统准备好继续前进 问题 由于黑色背景 指示器看起来很糟糕 由于指示器的一部
  • 了解 PDF 运算符 - 适用于 iOS 应用程序

    我的任务是为我们公司创建一个 pdf 阅读器应用程序 经过一些研究后 我对 PDF 中的不同运算符感到困惑 我想澄清以下几点 The Tm运算符用作每条线的起点 我的理解正确吗 If the Tm运算符是每行的起点 我如何解析显示的文本on
  • 连接到 Power BI API 时收到“禁止 (403)”

    我们一直在努力追随这篇 Power BI 文章这样我们就可以将报告 仪表板嵌入到我们的 SaaS 产品中 具体来说 我们陷入了第 3 步 创建嵌入令牌 我们能够很好地获得不记名令牌 但是当检索报告的请求最终提交给我们收到的 API 时 操作
  • 在 Visual Studio 2010 上安装 LibCurl

    我在 Visual Studio 2010 中使用 LibCurl 时遇到了一些问题 请记住 我对 C 还很陌生 我根据 libcurl 网站上的说明构建了库 并尝试将我的项目指向包含目录 libcurl lib 等 但当我尝试构建项目时
  • VS2008升级到VS2010“无法打开文件‘mfc90d.lib’”

    我正在尝试将 Visual C 2008 项目升级到 Visual C 2010 项目 当升级完成并且我强制升级时 我收到此错误 致命错误 LNK1104 无法打开文件 mfc90d lib 我认为它应该引用 mfc100d lib 我尝试
  • 检查文件是目录还是文件[重复]

    这个问题在这里已经有答案了 我正在编写一个程序来检查某物是文件还是目录 还有比这更好的方法吗 include
  • 在使用 iText5 生成的 PDF 中使用 unicode 字符

    我对生成的 PDF 中的 unicode 字符有疑问 在我自己的工作站上一切正常 但在测试环境上却出现问题 代码插入值如下 Font boldDefaultFont FontFactory getFont FontFactory HELVE
  • 列出所有带注释的标签,带注释,按提交日期排序

    列出带有注释的所有标签似乎很容易 例如 git tag n99 or git for each ref format refname short contents refs tags 并且还可以使用git log按创建者日期列出标签 例如
  • lStar 上的资源链接失败

    我正在开发一个 React Native 应用程序 我的 Android 构建开始失败CI环境 和本地 没有任何变化 Execution failed for task app processDevelopmentDebugResource
  • 将 Firebase 云功能限制为 IP 地址

    我有几个云功能 每种类型都已设置且运行良好https onRequest 我试图找出最好 最简单的方法来允许https onRequest被调用的函数only通过指定的IP地址 这能实现吗 我猜我需要创建一个有条件的服务帐户 但我还没有达到
  • 按下按钮后,使用 VBA 在 MS Access 中导入 .DBF 文件

    我必须单击按钮将 DBF 文件导入 MS Access 表 文件名为 SourceTable dbf Access 数据库是 StudentDataBase accdb 我要插入的表名为 myTable 首先我想问 表中是否需要具有相同的字
  • Dynamodb 过滤器表达式未返回所有结果

    我想扫描过去 7 天的所有项目 所以我要做的是生成 7 天前的时间戳并过滤大于该值的时间戳 但这次扫描返回了一些结果 请参阅以下 JavaScript const daysBack days gt let date new Date dat
  • 将 TextBox.Value 转换为 Double 到 VBA (Excel 2013)

    我的表单中有文本框 用户可以在其中输入值 在 VBA 中 我需要将值从字符串转换为双精度 我这样做是这样的 Private Sub UserForm Initialize some code Dim new value As Double
  • 我们可以在 orientdb 中更新 EDGE 吗?

    是否有可能获得一个在 orientdb 中更新插入边缘的示例 如果它不存在 有没有办法检查边缘是否存在 如果存在 则只需更新边缘 否则创建新边缘 我使用的是 Orientdb 2 1 13 版本 谢谢 通过 SQL 您可以使用基本的 UPD
  • 如何用jsoup解析简单的html代码?安卓

    这是我的html代码的一部分 div class entry themeform h3 dr James 8211 opiekun naukowy h3 p a href http www page com picture jpg img
  • 将 UILabel 添加到 UIToolbar

    我正在尝试向我的工具栏添加标签 按钮工作得很好 但是当我添加标签对象时 它崩溃了 有任何想法吗 UIBarButtonItem setDateRangeButton UIBarButtonItem alloc initWithTitle S
  • 如何将 Android 上的 Vimeo 和具有特定用户访问权限的网站集成

    我们购买了一个用于视频流的 VIMEO 帐户 我们的网站和 Android 应用程序正在运行 并且对内容的用户级别限制由 firebase 生成的令牌管理 现在我想集成 VIMEO 视频以供我们的网站和应用程序访问 并希望确保所需用户只能使
  • 在 MongoDB Realm Sync 中建模子集合

    我是 MongoDB 和 MongoDB Realm Sync 的新手 我正在关注领域同步教程 and 领域数据模型文档 但我想了解更多信息 因此我对 Atlas 集合结构进行了如下调整 Projects gt Tasks i e task
  • 动态添加的 DropDownlists 不会触发 SelectedIndexChanged 事件 [重复]

    这个问题在这里已经有答案了 我看到了很多关于这个主题的东西 但我找不到解决方案 我用一个事件添加了许多下拉列表 但它们没有触发 SelectedIndexChanged 事件 这是 drplist 创建者代码 foreach var row
  • 具有多行 UILabel 的自定义 Tableview 单元格需要动态高度

    我使用 Interface Builder 创建了一个自定义 TableView 单元 它看起来是这样的 对于描述标签 我需要将其自动换行 因此我将其设置为 在我的 SettingsPageViewController 中 我重写了以下表视