所以我试图修复一些涉及sizeWithFont的优秀的IOS7之前的弃用。我一直在关注此处提供的答案'sizeWithFont:constrainedToSize:lineBreakMode:'is deprecated:
..主要是处理CGSize和CGSizeMake。但是我的问题与CGRectMake有关,而且我还没有能够按照我想要的方式将它整合在一起。
这是原始代码:
CGSize optimumSize = [percentageText sizeWithFont:self.percentageFont constrainedToSize:CGSizeMake(max_text_width,100)];
CGRect percFrame = CGRectMake(text_x, right_label_y, optimumSize.width, optimumSize.height);
以下是我尝试过的事情:
NSString *percentageText = [NSString stringWithFormat:@"%.1f%%", component.value/total*100];
NSAttributedString *attributedText =
[[NSAttributedString alloc]
initWithString:percentageText
attributes:@
{
NSFontAttributeName: self.percentageFont
}];
CGRect percFrame = [attributedText boundingRectWithSize:(CGRectMake(text_x, right_label_y, max_text_width,100))
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
CGSize optimumSize = percFrame.size;
但我收到错误:"将CGRect发送到不兼容类型CGSize"的参数。但是我需要所有四个属性......而不仅仅是宽度和高度。所以我有使用CGRect而不是CGSize。知道我怎么能让它发挥作用吗?
否则我使用CGSize的所有其他代码都可以正常工作。我只有两段真正需要CGRect的代码。
答案 0 :(得分:0)
NSAttributedString上的方法采用最大大小作为参数。您可以在它返回的CGRect上设置所需的原点。
NSString *percentageText = [NSString stringWithFormat:@"%.1f%%", component.value/total*100];
NSAttributedString *attributedText =
[[NSAttributedString alloc]
initWithString:percentageText
attributes:@
{
NSFontAttributeName: self.percentageFont
}];
CGRect percFrame = [attributedText boundingRectWithSize:(CGSizeMake(max_text_width,100))
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
percFrame.origin = CGPointMake(text_x, right_label_y)