- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我见过一些类似的问题,但对其他人有用的其他解决方案都不适用于我,所以请不要将其标记为重复。我已经尝试了三天的替代解决方案,但没有成功。
作为应用程序的一部分,我的承包商要求我有一个选项卡,允许用户阅读带有特定主题标签的推文。我从 Twitter 中提取所有数据都很好,当我使用通用单元格(即高度 200,UITextView 高度 180)时,所有数据都进入并显示正常。但是,这显然看起来不太专业,我想将其更改为动态调整单元格的高度。
Interface Builder 中的 UI 如下所示(蓝色突出显示的是 UITextView):
谁能告诉我如何调整单元格和 TextView 的大小以正确显示内容?在这一点上我很迷茫。
最佳答案
你可以尝试使用this method .它与您的问题 99% 相似。先尝试让它只对Label起作用,然后再添加其他UIView
这里是关于问题解决的一些想法。
我将从上面的链接中复制部分代码。
首先,我将讨论只有一个标签的简化表格单元格。在 Storyboard中添加 4 个约束(尾部和前导、标签和 super View 之间的顶部和底部间距)。
在这种情况下,单元格的高度应如下所示:
Content view height = Top constraint + label height + Bottom constraint
- (void)configureCell:(CustomCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
cell.customLabel.text = self.tableData[indexPath.row];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [self.tableView dequeueReusableCellWithReuseIdentifier:@"custom_cell"]
[self configureCell:cell atIndexPath:indexPath];
// here is HUGE mistake in link above! Be careful!
[cell setNeedsLayout];
[cell layoutIfNeeded];
CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
return height + 1;
}
这是代码的作用:
1. Configuring the content of the cell
2. Forcing a layout of the cell to apply constraints
3. Getting the height of the contentView, computed using Auto-Layout. We can’t directly call systemLayoutSizeFittingSize:UILayoutFittingCompressedSize: on the cell because the constraints we’ve set up are relative to the content view. Finally, we use UILayoutFittingCompressedSize to get the smallest size fitting the content.
4. Adding a bonus 1. We’ve computed the content view height but we actually need to return… the cell height here. And it’s 1 pixel higher, because of the separator, which height is 1 pt (0.5 for Retina screens on iOS 7, to be exact).
关于这个解决方案的讨论此解决方案涉及更多计算,然后询问 [NSString -boundingRectWithSize:options:attributes:]
。但在我看来,后一种方法会让您将所有设计(约束、字体设置等)直接转移到代码中,因为它只为您提供标签高度,而不是整个单元格。
假设您从顶部和底部缩进 10pt。对于新的更新,您决定将其更改为 5。您必须更改代码,否则它不会反射(reflect)更改。
当然,计算每个单元格的高度涉及更多的计算。幸运的是,在 iOs7 中引入了新的 UITableView 委托(delegate)方法:tableView:estimatedHeightForRowAtIndexPath:
。大大减少了计算量,提高了性能。
我确实相信,您应该使用这篇文章中描述的方法(尽管事实上,iOs6 可能存在一些性能问题。我认为现在只有 5-10% 的 iOs6 用户并且还在减少。)
关于ios - 如何根据 UITextView 的内容调整 UITextView 和 UITableViewCell 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054418/
我有一个程序: [textView setFont:[UIFont fontWithName:@"ArialMT" size:20]]; [textVi
我正在 UITextViewDelegate 中处理代码。那里的每个函数都会接收接收事件的 UITextView 实例,例如: - (void)textViewDidBeginEditing:(UIT
我想在默认图像附件菜单选项(复制图像、保存到相机胶卷)中添加另一个菜单选项。请注意,如果 textView 未处于编辑模式,则当您长按嵌入在 UITextView 中的图像时会显示这些选项。 我已经尝
我想尝试禁用 UITextTapRecognizer,我认为它是 UITextView 的内置属性,因为我怀疑它会干扰我想要实现的点击手势识别器。这怎么可能? 感谢阅读! 最佳答案 我不确定这是否直接
首先我使用这个 UITextView 类 TextView 类.h @interface textViewClass : UITextView TextView 类.m @implementation
我正在开发一个应用程序,我需要为大文本放置一个 UITextView。我有一个尺寸为 180X89 的背景图像(与 UITextView 框架大小相同)。当将图像放在 UITextView 后面时,一
我只是想在 UITextView 中输入一些默认文本。有几个段落,我想用一个新行分隔这些段落。但是,当我按回车时,它只是完成了数据的输入。 在界面生成器中为 UITextView 创建默认文本时,如何
我的 iPhone 应用程序中有两个 UITextView。当用户选择一个 UITextView 时, Controller 会自动转到另一个 UITextView。我在我的项目中尝试了以下方式。但是
我正在使用 UITextView 并在我的代码中分配一些文本,但出于某种原因,它总是在 5-6 行之后开始。 UITextView 是一个 AttributedTextView 或允许属性字符串。
我有一个自定义 UIView,我想在其中布局一组 UITextView 以响应 AJAX 调用。所以我想我需要在代码中创建这些。我目前将位置设置为固定位置,但宁愿将其设置为比前一个位置低 20 像素。
我正在开发一个应用程序,它具有动态添加 TextView 的功能,在我们拖动它时增加和减小它的大小。 我可以根据字符数调整 TextView 大小,方法是将 TextView 的内容大小设置为 Tex
这可能是个愚蠢的问题。我正在尝试像所附图片一样设置左/右页边距。我通过在UIScrollView中添加UITextView成功实现了。但是,我几乎可以单独使用 UITextView 实现我想要的一切。
我有一个 UITextView。我正在根据方法 textViewDidChange 中文本的大小调整 TextView 的大小。这在我打字时工作正常。但是当我粘贴一些东西时,这不会接到电话。这是预期的
我正在开发一个基于消息的 iPhone 应用程序。我有一个屏幕可以回复收到的消息。此屏幕包含两个 UITextView,如 bottomTextView 和 topTextView。 topTextV
我用 View 制作了一个 UITextview 自定义控件。它工作正常。当我输入新行时, TextView 会随着 View (深蓝色)而增加。此后 TextViell 将以滚动的形式工作。 代码是
我想在用户完成编辑并点击屏幕上的其他地方后对我的 UITextView 执行一些处理。最佳做法是什么? 我几乎设法通过 func textViewDidEndEditing(textView: UIT
我想更改富 UITextView (iOS 6) 的部分或全部属性文本,并允许用户撤消更改。 看完NSUndoManager documentation ,我尝试了第一种方法: “Simple und
当我在 IOS7 模拟器上测试我的应用程序时。 有时我在使用 sizeToFit 时发现它很奇怪的 UITextView .sizeToFit后的框架看起来是对的,但文字只能部分显示,就像下面的照片一
我想要一个 tablew View ,其行为类似于 Apple 的 iPhone 联系人应用程序:一个 uitableviewcell,里面有一个 uitextview,这样当我在 uitextvie
我有一个可编辑的 UITextView,然后是一个仅供选择的 UITextView。当我在第一个 UITextView 中写东西时,有时我想引用另一个 UITextView 来复制文本,然后将其粘贴到
我是一名优秀的程序员,十分优秀!