UITableViewCell的最大高度是多少?

3

Translated

我正在开发一个应用程序,用户可以在UITextView中将字体大小调整到50pt。目前,用户可以编辑这个UITextView的文本,输入字符的数量没有限制(我老板希望避免任何规定性行为)。UITextView会根据文本的长度自动垂直调整大小。当UITextView的高度超过一定值时,任何后续输入的字符都将被隐藏,除非允许UITextView滚动。

需要说明的是,这种情况极为罕见。然而,由于该应用鼓励这种行为,有可能偶尔会遇到此类限制。

我想问一下,UITextView的高度是否存在限制?还是问题可能出在其他方面?

修改

也许我自己没有理解清楚我的情况。我忘记考虑UITextView位于tableViewCell内部,实际上我正在调整的是textView的大小也导致了cell的大小变化。那么,tableViewCell的高度是否存在限制呢?

问题答案

感谢@jere和@A-Live提供的答案,它们对我很有帮助。我现在感觉很傻。A-Live指出了max float值的问题,这让我意识到我犯了一个明显的错误。

为了适当地调整textView大小,使用约束来建立CGSize。为了确保高度可以达到最大值,高度约束使用了一个假定不会达到的很高的数字1000。但是,显然1000并不足以满足需求,因此UITextView的高度没有被完全展开。这也说明提供代码的重要性。

CGSize textSize = [textView.text sizeWithFont:textView.font constrainedToSize:CGSizeMake(textView.frame.size.width - PADDING * 2, 1000.0f) lineBreakMode:UILineBreakModeWordWrap];

更新问题的最准确答案是 @jere。因为这个答案已经被指出,所以我将不得不防止单元格大小达到那个神奇的数字“2009”。

你能澄清一下这个“问题”吗?我不太明白你是如何调整视图大小的:a. 直到达到底部父视图边缘(这很合理,应该与用户体验相匹配)还是b. 无限制地调整(除非父视图是另一个scrollView,否则没有意义,因为它会像A一样表现)。 - A-Live
是的,也许我的回答不够详细。我已经在原来的问题中添加了一条编辑信息。 - WillSeabrook
我认为它在设计上并没有受到任何限制,除了类型最大值,是否有特别的原因需要关注呢?您可以在https://developer.apple.com/library/ios/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html查看CGRect规范,寻找CGFLOAT_MAX。 - A-Live
2个回答

7
请注意,如果您只想为某些单元格设置高度而不是全部单元格,则必须使用委托方法 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 并在那里返回所需的行高。
您也可以使用 rowHeight 属性,但它适用于整个表视图。
现在这里有一个关于委托方法的苹果文档的有趣部分:

重要提示:由于底层实现细节,您不应返回大于2009的值。

所以我想那一定是最大值或什么的。无论如何,如果您的单元格超过200或300像素,那就有点疯狂了...

我同意单元格超过300像素是很疯狂的,但不幸的是这就是被要求的。我以为你已经通过那个有趣的关于表格单元格的信息为我找到了答案。不幸的是,如果我将行高主动设置为2009,则单元格比textView大得多,这会让我相信我最初的假设是正确的,实际上是textView拒绝扩展到某一点。 - WillSeabrook

0

UITextView类没有最大长度属性,因此您可以输入所需的任意字符以在TextView中显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接