我有一个UILabel,它的文本是动态生成的,因此,根据文本,UILabel的宽度从iOS6 to iOS8开始增加。有什么解决办法吗?它只能在iOS7和iOS6.0上运行,boundingRectWithSize方法崩溃了,它说boundingRectWithSize方法仅适用于iOS7.0及更高版本。

float widthIs =[[tagsArray objectAtIndex:i] boundingRectWithSize:_tagsValue.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_tagsValue.font } context:nil].size.width;
_tagsValue.frame=CGRectMake(prevTag, 2, widthIs+20, 30);
prevTag+=widthIs+30;

最佳答案

您需要检查一下iOS6和iOS7,


if([[[tagsArray objectAtIndex:i] respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]){
    float widthIs =[[tagsArray objectAtIndex:i] boundingRectWithSize:_tagsValue.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:_tagsValue.font } context:nil].size.width;
    _tagsValue.frame=CGRectMake(prevTag, 2, widthIs+20, 30);
    prevTag+=widthIs+30;
}
else{
    float widthIs = [[[tagsArray objectAtIndex:i] sizeWithFont:font constrainedToSize:(CGSize){CGFLOAT_MAX, CGFLOAT_MAX}];
}

10-08 08:30