gpt4 book ai didi

iphone - UILabel 的 sizeToFit/sizeThatFits 忽略 numberoflines 属性

转载 作者:行者123 更新时间:2023-12-03 18:13:29 25 4
gpt4 key购买 nike

问题:确定 UILabel 需要的大小(行数),假设宽度为 300 像素。该字符串较长,因此我将 lineBreakMode 设置为 UILineBreakModeWordWrap 并调用 sizeThatFits 来尝试确定大小。但它给出的单行宽度为 457 px,而不是预期的两行 300 px。

请参阅:

CGSize available = CGSizeMake(300, INFINITY);
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease];
label.text = title;
label.lineBreakMode = UILineBreakModeWordWrap;
label.font = [UIFont fontWithName:kBoldFont size:kTitleFontSize];
label.numberOfLines = 3;
CGSize sizedtoFit = [label sizeThatFits:available];

但我发现 sizedtoFit 变量的宽度为 457 像素,高度为 22 像素,并且 UI 显示带有剪切文本的单行。我预计两行的宽度为 300 像素,高度为 44 像素。

numberoflines 的 UILabel 文档说:

当使用 sizeToFit 方法调整接收器大小时,调整大小时会考虑存储在此属性中的值。例如,如果此属性设置为 3,则 sizeToFit 方法会调整接收器的大小,使其足够大以显示三行文本。

我尝试了以下各种组合:

  1. CGRectZero 传递给 init 函数,传递 300x400 或 300 x 无穷大。
  2. 在创建后设置框架,而不是将其传递给 init 函数。
  3. 调用[sizeToFit]并希望它计算假设当前宽度的高度,但事实并非如此。
  4. 调用 sizeToFit,然后调用 sizeThatFits`。
  5. 调用layoutIfNeeded

它们都不起作用。我做错了什么,或者这是文档和框架实现不一致的坏错误?谢谢。

最佳答案

我遇到了同样的问题,适合的尺寸只是忽略了尺寸.../:我最终使用:

CGRect textSize = [UILabel textRectForBounds:CGRectMake(0, 0, 300, CGFLOAT_MAX) 
limitedToNumberOfLines:3];

工作起来就像一个魅力......:)

文档说你不应该直接调用它,但我已经使用它有一段时间了,通过批准提交的应用程序,一切都很棒......:)

关于iphone - UILabel 的 sizeToFit/sizeThatFits 忽略 numberoflines 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041874/

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