-1

因此,当我需要将我的应用程序升级到更新的 iOS 时,我遇到了 sizeWithFont 命令被贬值的问题。有人可以帮我解决如何用新功能替换它。

这是我的代码:

  // Add label if label text was set
if (nil != self.labelText) {
    // Get size of label text
    CGSize dims = [self.labelText sizeWithFont:self.labelFont];

    // Compute label dimensions based on font metrics if size is larger than max then clip the label width
    float lHeight = dims.height;
    float lWidth;
    if (dims.width <= (frame.size.width - 2 * margin)) {
        lWidth = dims.width;
    }
    else {
        lWidth = frame.size.width - 4 * margin;
    }

    // Set label properties
    label.font = self.labelFont;
    label.adjustsFontSizeToFitWidth = NO;
    label.textAlignment = NSTextAlignmentCenter;
    label.opaque = NO;
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor whiteColor];
    label.text = self.labelText;

我如何需要使用新函数来获取标签文本的大小?

4

2 回答 2

0

使用boundingRectWithSize如下:

CGSize sizeT = CGRectIntegral([yourstring boundingRectWithSize:CGSizeMake(yourpreferedwidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil]).size;

或者你可以使用sizeThatFits

CGSize maximumLabelSize = CGSizeMake(310, 9999);
CGSize expectSize = [yourlabel sizeThatFits:maximumLabelSize];

有关更多信息,请参阅此答案:https ://stackoverflow.com/a/19518480/3202193

于 2015-07-09T04:19:00.993 回答
0

使用 sizeWithAttributes 方法

CGSize size = [string sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17.0f]}];

// Values are fractional -- you should take the ceilf to get equivalent values
CGSize adjustedSize = CGSizeMake(ceilf(size.width), ceilf(size.height));
于 2015-07-09T04:22:26.603 回答