Swift与OC比较之NSStringDrawingOptions

用NSStringDrawingOptions计算label的高度

先来看OC

//字体大小配置
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:fontSize]};
//计算size
CGSize size = [text boundingRectWithSize:CGSizeMake(width, 0) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesDeviceMetrics attributes:attribute context:nil].size;
//label高度
CGFloat height = size.height;

再来看Swift

//先将String类型转成NSString类型
let text = str as NSString
//字体大小配置
let attribute = [kCTFontAttributeName: UIFont.systemFont(ofSize: fontsize)]
//计算size
let size = tempStr.boundingRect(with: CGSize.init(width: width, height: 0), options: NSStringDrawingOptions(rawValue: NSStringDrawingOptions.RawValue(UInt8(NSStringDrawingOptions.usesFontLeading.rawValue) | UInt8(NSStringDrawingOptions.usesDeviceMetrics.rawValue) | UInt8(NSStringDrawingOptions.usesLineFragmentOrigin.rawValue))), attributes: attribute as [NSAttributedStringKey : Any], context: nil).size
//label高度
let height = size.height

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容