调整 UITableViewCell 框架大小问题

2023-12-01

我正在尝试调整我的大小UITableViewCell's框架通过:

 [cell setFrame:CGRectMake(cell.frame.origin.x, 
                           cell.frame.origin.y, 
                           cell.frame.size.width, 
                           cell.frame.size.height+25)];

但是,我这样做后它没有调整大小......这是为什么?

这很奇怪,好像我添加了一个UIToolBar进入单元格,它会调整大小,但是当我添加 UIView 时,它不会:

[cell.contentView addSubview:sideSwipeView];

这是它的长处和短处:

  1. 单元格宽度由其所在表格视图的宽度决定。

[编辑:如果它是分组表格视图,则单元格比表格视图宽度窄 20 - 60 像素,具体取决于您使用的是 iPhone 还是 iPad。]

  1. 您的单元格高度由以下因素决定heightForRowAtIndexPath method.

如果您手动设置单元格的框架,那么除非您使用子类单元格并希望根据单元格的尺寸添加子视图,否则它将毫无用处。

即使在这种情况下,建议使用以下方法从表格视图中获取单元格的框架rectForRowAtIndexPath:(NSIndexPath*)indexPath方法,然后将该框架设置为单元格的框架(在将框架的原点 Y 设置为 0 后)。

我不太确定 UIToolBar,但是您的子视图的框架不会在更改单元格框架时发生变化。

也许如果您能告诉我们您想要实现什么目标,我们可以为您建议一个解决方案?


- - - - - - - - - - 编辑 - - - - - - - - - -


因此,您需要在点击单元格时动态地将子视图添加到单元格中,并根据新的子视图调整其高度。这会变得很麻烦,所以这里是:

在您的 .h 文件中声明:

BOOL subviewAdded;

在 .m 文件的 init 中,执行以下操作:

subviewAdded = NO;

假设您希望单元格的高度在没有子视图的情况下为 50,在有子视图的情况下为 100。因此,您的 heightForRow 方法应该是:

- (CGFloat)tableView:(UITableView *)tableView 
           heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return (subviewAdded?100.0f:50.0f);
}

这意味着最初由于 subviewAdded 为 NO,所有单元格的高度都会较小。

现在,要在点击单元格时向单元格添加子视图,并动态更改其高度,请在 didSelectRow 方法中执行以下操作:

- (void)tableView:(UITableView *)tableView 
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //Get the cell at this indexPath

    UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath];

    if(subviewAdded)
    {
        subviewAdded = NO;

        for(int i = 0; i < [thisCell.contentView.subviews count]; i++)
        {
            UIView *thisSubview = [thisCell.contentView.subviews objectAtIndex:i];
            [thisSubview removeFromSuperview];
        }
    }
    else 
    {
        UIView *someView = [[UIView alloc] initWithFrame:someFrame];

        [thisCell.contentView addSubview:someView];
        [someView release];

        subviewAdded = YES;
    }

    NSMutableArray *array = [NSMutableArray array]; 

    [array addObject:indexPath];

    [tableView reloadRowsAtIndexPaths:array 
                     withRowAnimation:UITableViewRowAnimationFade];
}

因此,这里将发生的事情是向您点击的单元格添加一个子视图。重新加载此单元格将调用heightForRowAtIndexPath并做一个漂亮的小淡入淡出动画并改变你的桌面视图高度。

重要提示:理想情况下,您应该维护一个带有布尔值的 NSNumber 数组。数组大小应该与您拥有的表格视图单元格的数量相同。

在 heightForRow 中,您将检查该数组,而不是对整个 tableView 使用单个布尔值。这将确保不同的单元格可以具有不同的高度。

那看起来像:

- (CGFloat)tableView:(UITableView *)tableView 
           heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    BOOL thisBool = (BOOL)[[booleanArray objectAtIndex:indexPath.row] boolValue];

    return (thisBool?100.0f:50.0f);
}

我没有在这里发布所有代码,因为它是隐含的,我发布的内容应该可以帮助您很好地完成布尔数组的工作。

无论如何,你就在那里。我刚刚自己测试了这段代码,所以它有效:)

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

调整 UITableViewCell 框架大小问题 的相关文章

  • NSUInteger 的奇怪行为 - 无法正确转换为浮动

    这是我的情况 这让我发疯 我有一个计数值为 517 的 NSMutableArray 我有一个双精度值 它是我的乘数 double multiplier 0 1223 double result myArray count multipli
  • 生成具有固定数字长度的随机数?

    我正在生成随机数 int randomID arc4random 3000 但我想生成至少 4 位数字的随机数 如 1000 2400 1122 我想知道 Objective C 的代码 请尝试 生成数字 1000 9999 int ran
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • iPhone - UIImage imageWithData 返回 nil

    我需要从字节数组创建 UIImage 现在我创建了字节数组 image CGImageCreateWithImageInRect aux CGImage imageRect context CGBitmapContextCreate dat
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • UIViewControllerAnimatedTransitioning:旋转更改后黑屏片段

    我已经创建了一个视图控制器转换 只要我不更改设备方向 一切都正常 图 1 显示了应有的屏幕 然后我切换到下一个视图控制器 在其中更改方向 现在我回到第一个视图控制器并再次切换方向 然后我得到的结果如图 2 所示 出现黑色边框 请不要介意屏幕
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 将 NSData 转换回音频文件

    我已经转换了我的 caf音频文件到NSData使用以下代码行对象 NSData audioData NSData dataWithContentsOfFile MyRecorderFilePathURL path options 0 err
  • UIPickerView selectRow 未按预期工作

    我创建了一个UIPickerView它有两个组件 第一个组件 A 的行数固定为 13 另一个组件 B 的行数可变 具体取决于 A 中选择的行 加载时UIPickerView我调用以下命令 以便我可以在两个组件中默认选择 但是我遇到的问题是只
  • UITableViewCell显示多种字体

    我想在 uitableviewcell 中以类似于 iPhone 地址簿的不同字体显示两个单词 例如 约翰Buchanan 您应该使用两个 UILable 或者您可以使用OH属性标签 https github com AliSoftware
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • Objective-C 中发送给对象的消息可以被监听或者打印出来吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 中拦截方法调用 https stackoverflow com questions 1618474 intercept method call in objective c 如
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • HTML 和 XHTML 有什么区别?

    注意 这应该是这个问题的规范帖子 已经存在许多答案 但对各种差异的描述分散在各处 而且通常 他们还提供 我应该使用哪一个 的意见 我将在这里避免这种情况 如果您还有更多问题要问 或者您知道更多差异 请随时进行编辑 XHTML 和 HTML
  • 如何让我的 Facebook 应用程序在安装后自动请求所需的权限

    我正在使用 Facebook PHP SDK 2 1 2 我想做的就是几乎每个 Facebook 应用程序都具有req perms有 安装时会弹出愚蠢的 请求权限 框 我不想要用户必须按下的按钮 我不希望出现弹出窗口 我不想使用 FBML
  • 将“this”和参数传递给 addEventListener 函数而不使用绑定

    接下来禁用插件时 引导插件中的删除事件监听器不起作用 我正在探索其他可能性 除了使用bind 并缓存绑定函数 有没有办法使用 this 并传递参数 works fine but can t pass argeement contextMen
  • UITableView 滑动手势需要近乎完美的准确性

    我正在为使用自定义 UITableViewCell 子类的 UITableView 开发自定义滑动事件 我包括了UIGestureRecognizerDelegate在我的标题中 并将其放入viewDidLoad UISwipeGestur
  • 在 GNU 汇编器宏中引用操作数/参数

    我目前正在尝试理解的概念汇编语言中的宏 特别是在 GNU 汇编器中 IA 32 x86 的 AT T 语法 我大学的幻灯片内容如下 How to define a macro macro write string movl string e
  • 在 Magento 中通过 SOAP 将产品添加到购物车时设置自定义选项

    我正在尝试使用购物车产品添加用于将具有自定义选项的产品添加到购物车的 SOAP API 下面是我为产品参数传递的数组 我有一个自定义选项 id 1 下拉列表中的选定值 id 为 2 您可以查看产品在这里 array size 1 0 gt
  • Android 快捷方式位图启动器图标大小

    我无法找到快捷方式的正确启动器图标大小 在我的 Nexus 7 2 上 android R dimen app icon size 参见代码 的值为 96 像素 但如果我在我的主屏幕截图上测量其他应用程序的真实图标大小 它是 120 像素
  • 类型错误:$ 在 jquery 中未定义

    我正在尝试在基于 WordPress 的网站上使用 jquery 中的 tabcordion 库 tabcordion javascript 文件正在 排队 并出现在 jquery 文件之后 因此该位看起来不错 jquery 代码的开头是
  • SQL CLR - 从 2008 R2 迁移到 2012。

    我在 SQL 2008 R2 上有一堆 SQL CLR 程序集 这些程序集以 Net Framework 3 5 为目标 鉴于 SQL 2008 支持 2 0 NET Framework 版本 我假设 SQL 从系统 GAC 加载安全程序集
  • 比较 mongo find 方法中的 2 个日期

    我有 mongo 文档 其中包含 last active 日期和创建日期 我想搜索所有包含以下内容的文档daylast active 不等于day创建的 但我不知道如何编写查询 在 MySQL 中我会这样写 WHERE DATE FORMA
  • 一键发布时:执行发布异常:已添加具有相同密钥的项目

    我意识到有十亿人询问过这个错误 但我已经查看了所有人 我的好像不一样我没有收到任何类型的源代码错误 没有堆栈跟踪 也没有任何有用的信息 因为在我的 MVC NET 项目上单击 发布 后立即发生错误 它只是一个对话框 仅此而已 没有其他事情发
  • Powershell 可执行文件未输出到 STDOUT

    来自 powershell 脚本 带有nuget安装并在路径上 我正在尝试执行可执行文件 net 如果这很重要 但由于某种原因 我无法在命令窗口中显示 STDOUT nuget install mdoc OutputDirectory pa
  • ES6 需要配置 webpack 吗?

    我有一个 Angular 应用程序 其中包含针对 ES6 的 tsconfig 文件 compileOnSave false compilerOptions allowJs true baseUrl outDir dist out tsc
  • 如何手动设置语料库中的文档ID?

    我正在从数据帧创建 Copus 我将其作为VectorSource因为我只想将一列用作文本源 这可以找到 但是我需要语料库中的文档 ID 来匹配数据帧中的文档 ID 文档 ID 存储在原始数据框中的单独列中 df lt as data fr
  • 增强序列化:前向兼容性因输入流错误而失败

    遵循这个问题 Boost序列化子类我正在尝试支持使用 boost 序列化生成的存档的前向兼容性 但我在使用较旧的代码读取较新的存档时遇到问题 class A public A virtual A default private friend
  • 如何避免 Scala 中类型绑定的重复

    我有一个带有约束类型参数的类 我尝试过identity但返回类型不精确 并且在方法中identityTP 我需要再次指定约束 如何避免使用适用于此类型的方法重复此约束 这是一个例子 sealed trait Location case ob
  • 添加到 window.onload 事件?

    我想知道如何向 window onload 事件添加另一个方法调用 被分配了一个方法调用 假设在脚本的某个地方我有这个作业 window onload function some methods 1 然后稍后在脚本中我有这个作业 windo
  • 在短时间内打开大量连接时的ECONNRESET

    我有这样的情况 我想在猎户座上创建大量实体 我正在将 Orion 和 mongo 的 docker 版本与此 docker compose 一起使用 version 3 services mongo image mongo 3 4 volu
  • 在 XCode 中链接 libuv 库

    有没有人有过在 xcode 中链接 libuv 的经验 我在 git 中创建了一个子模块 以便轻松更新库 但我不太清楚如何正确地将库添加到项目中以允许我包含 uv h 任何帮助我将不胜感激 您可以使用 GYP 为 libuv 生成 xcod
  • 调整 UITableViewCell 框架大小问题

    我正在尝试调整我的大小UITableViewCell s框架通过 cell setFrame CGRectMake cell frame origin x cell frame origin y cell frame size width