使用 boundingRectWithSize CGRectMake 修复弃用
Fixing deprecation with boundingRectWithSize CGRectMake
所以我正在尝试修复一些未解决的、IOS7 之前的弃用问题,这些问题涉及 sizeWithFont。我一直在关注此处提供的答案 '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;
但我收到错误:"Sending CGRect to parameter of incompatible type CGSize"。但是我需要所有四个属性......而不仅仅是宽度和高度。所以我 必须 使用 CGRect 而不是 CGSize。知道如何让它发挥作用吗?
否则,我所有其他仅使用 CGSize 的代码都可以正常工作。只是我有两段代码确实需要CGRect。
NSAttributedString 上的方法将最大大小作为参数。你可以在 CGRect 上设置你想要的原点 returns.
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)
所以我正在尝试修复一些未解决的、IOS7 之前的弃用问题,这些问题涉及 sizeWithFont。我一直在关注此处提供的答案 '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;
但我收到错误:"Sending CGRect to parameter of incompatible type CGSize"。但是我需要所有四个属性......而不仅仅是宽度和高度。所以我 必须 使用 CGRect 而不是 CGSize。知道如何让它发挥作用吗?
否则,我所有其他仅使用 CGSize 的代码都可以正常工作。只是我有两段代码确实需要CGRect。
NSAttributedString 上的方法将最大大小作为参数。你可以在 CGRect 上设置你想要的原点 returns.
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)