【问题标题】:I'm getting problem when setting the height of label dynamically动态设置标签高度时出现问题
【发布时间】:2011-05-25 06:55:46
【问题描述】:

我正在根据标签高度和标签高度根据文本动态设置 tableView 单元格高度。当我给出带空格的文本时,它工作正常(例如:这是 stackoverflow 的问题)。但是当我输入长度为两行且没有空格的文本时(例如 ThisisQuestionforstackoverflow)。它占用两行,文本从第二行开始并在末尾剪切。它占用第一行完整空间和第二行(ThisisQuestionfor.....)。

我正在使用方法

  • +(float) calculateHeightOfTextFromWidth:(NSString*) text: (UIFont*)withFont: (float)width:(UILineBreakMode)lineBreakMode
  • -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

在 cellForRowAtIndexPath 中

float productNameHeight = [DetailsViewController calculateHeightOfTextFromWidth:warObj1.productName :valueFont : valueWidth :UILineBreakModeWordWrap];
UILabel *productNameValue = [[UILabel alloc] initWithFrame:CGRectMake(xCoordinateStartLocatioForValue,yCoordinateStartLocation,valueWidth,productNameHeight)];

你能帮我一下吗。提前谢谢

【问题讨论】:

    标签: iphone objective-c cocoa-touch uikit


    【解决方案1】:

    如果文本中没有空格,请务必在计算 UILabel 的大小和 UILabel 本身的 lineBreakMode 属性时使用 UILineBreakModeCharacterWrapUILineBreakModeClip

    【讨论】:

      【解决方案2】:

      标签的换行模式是什么,你允许它有多少行?

      您可能正确设置了标签的高度,但随后告诉将所有文本绘制在一行上:)

      您应该检查标签中的行数是否为 0(这意味着需要多少行),并且换行模式设置为字符换行。 (听起来它现在被设置为截断结尾)。

      【讨论】:

      • 您好,我采用了 WordWrap 换行模式,并且设置了 label.numberoflines = 0。
      • 我试过字符中断模式仍然出现同样的问题。
      • 'thisisaverylongstringwithnospaces' 和'this is a very log string with nospaces' 是什么?它们是一样的吗?如果它们不同,则与您调用calculateHeightOfTextFromWidth的方式有关
      猜你喜欢
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2017-11-23
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2015-02-05
      相关资源
      最近更新 更多