我有一个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}];
}