【问题标题】:UILabel with dynamic height not working for same string in iOS具有动态高度的 UILabel 不适用于 iOS 中的相同字符串
【发布时间】:2013-04-20 09:41:05
【问题描述】:

我在我的应用程序中使用以下代码来获取 UILabel 的动态高度。

CGSize maximumLabelSize = CGSizeMake(231, FLT_MAX);

    CGSize expectedLabelSize = [labelString
                            sizeWithFont:self.verbLabel.font
                            constrainedToSize:maximumLabelSize
                            lineBreakMode:self.verbLabel.lineBreakMode];

    //adjust the label the the new height.
    CGRect newFrame = self.verbLabel.frame;
    newFrame.size.height = expectedLabelSize.height;
    self.verbLabel.frame = newFrame;
    return newFrame;

我的 labelString 是 如果你问一个有争议的公众人物怎么办?他/她可能提出什么想法? 所以有时我可以显示整个字符串,但有时它只是剪切了一些文本。 我该如何解决这个问题......请帮助我,如果我做错了什么,请告诉我。

【问题讨论】:

    标签: iphone ios objective-c ios6 uilabel


    【解决方案1】:

    将 numberOfLines 设置为 0 以允许任意数量的行。

    label.numberOfLines = 0;
    

    【讨论】:

    • 是的,我已经设置了行数 = 0 和 sizeToFit,因为它仍然遇到问题。
    • 检查您的标签高度?.. 只需 NSLog 即可了解高度。你在哪里设置numberOfLines
    【解决方案2】:

    我建议您使用以下方法而不是 sizeWithFont: 东西:

    CGSize maximumLabelSize = CGSizeMake(231, FLT_MAX);
    CGSize requiredSize = [self.verbLabel sizeThatFits: maximumLabelSize];
    self.verbLabel.frame = CGRectMake(x, y, requiredSize.width, requiredSize.height);
    

    这更干净,可能更适合你!

    设置self.verbLabel.numberOfLines = 0; 也可能有好处。

    Here's 很好地解释了为什么使用 sizeThatFits 比使用 sizeWithFont 更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多