- 记得之前写过关于iOS中根据控件的大小获取字体行数的文章,当时粗略看了一下,稍作分享,今日细看甚有差错。在之前的方法里
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode
只是用在7.0版本之前,所以当你运行在7.0之后的设备上的时候,oh no! crash!细看帮助文档,苹果明显标注NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:attributes:context:")
,并且提供了代替的方法,所以总结下来可以用下面的方法来计算,与大家分享:
这样你就可以放进你的Utilities类里了,然后快乐coding!+ (CGSize) heightForString:(NSString *)content fontSize:(float)fontSize andWidth:(float)width { UIFont *font = [UIFont fontWithName:@"Regular" size:fontSize];//跟控件上的字体大小一样 CGSize size = CGSizeMake(width, 29999);//跟你的控件宽设置一样 if ([[[UIDevice currentDevice] systemVersion] floatValue]>7.0) { NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName,nil]; size =[value boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:dic context:nil].size; } else { size = [value sizeWithFont:font constrainedToSize:size lineBreakMode:NSLineBreakByCharWrapping];//ios7以上已经摒弃的这个方法 } return size; }
关于iOS中动态获取获得字体的行数的更新
最新推荐文章于 2024-07-17 11:38:25 发布