gpt4 book ai didi

iphone - 如果被包装的文本中有一个长字符串,则 sizeWithFont 不会为 UITextView 提供正确的高度

转载 作者:太空狗 更新时间:2023-10-30 03:17:36 25 4
gpt4 key购买 nike

有没有办法使用以下方法获取 NSString 的正确大小:

- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode

那不会被 2 或 300 个字符串抛弃。目前,如果我尝试对这些长字符串使用此方法,它会错误地计算它们,最终会在 UITextView 底部出现大量空白。

我试过使用 UILineBreakModeWordWrap 和 UILineBreakModeCharacterWrap。

正在调整大小

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGFloat result = 44.0f;
NSString* text = nil;
CGFloat width = 0;
CGFloat tableViewWidth;
CGRect bounds = [UIScreen mainScreen].bounds;

tableViewWidth = bounds.size.width;


width = tableViewWidth - 150;

text = stringWithLongWords;

if (text) {
CGSize textSize = { width, 20000.0f };
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:10.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];

size.height += 50.0f;
result = MAX(size.height, 44.0f+30.0f);
}

return result;
}

最佳答案

UITextView 并不完全像包裹在 UIScrollView 中的 UILabel。它的行距不同于 sizeWithFont:constrainedToSize:linkBreakMode: 未考虑的字体大小和边距。

知道您的字体大小后,您就可以计算行数并将行间距考虑在内。您可以猜测边距并尝试欺骗 sizeWithFont: 以给出更有用的答案。

流行的解决方案似乎是:

  • 如果您不需要任何 UITextView 功能,只需使用 UILabel

  • 如果您需要超链接,将看起来像超链接的UIButtons覆盖在UILabel

  • 使用屏幕外的 UITextView 及其 sizeToFit 方法来获得真正的答案

第三个选项我运气不好,但听起来应该可行,所以也许我做错了什么。

我将尝试使用 UILabel 并为超链接覆盖按钮。我们将看看结果如何。

如果失败了,Loren Brichter(在推特上名声大噪)总会有一个选择:自己使用 CoreGraphics 将所有内容绘制到 UIView 中。

祝你好运!

关于iphone - 如果被包装的文本中有一个长字符串,则 sizeWithFont 不会为 UITextView 提供正确的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com