Swift - 计算文本高度

xiaoxiao2021-02-28  4

 源代码来自: http://www.cnblogs.com/YouXianMing/p/5823893.html,但是在当前Xcode(8.3) swift版本下已经不兼容了,改造后的代码如下:

// // String+StringHeight.swift // StringHeight // // Created by YouXianMing on 16/8/30. // Upgraded By Stone on 2017-6-15 // Copyright © 2016年 YouXianMing. All rights reserved. // import Foundation import UIKit extension String { /** Get the height with the string. - parameter attributes: The string attributes. - parameter fixedWidth: The fixed width. - returns: The height. */ func heightWithStringAttributes(attributes : [String : AnyObject], fixedWidth : CGFloat) -> CGFloat { guard self.characters.count > 0 && fixedWidth > 0 else { return 0 } let size = CGSize(width:fixedWidth, height:CGFloat.greatestFiniteMagnitude) let text = self as NSString let rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: attributes, context:nil) return rect.size.height } /** Get the height with font. - parameter font: The font. - parameter fixedWidth: The fixed width. - returns: The height. */ func heightWithFont(font : UIFont = UIFont.systemFont(ofSize: 18), fixedWidth : CGFloat) -> CGFloat { guard self.characters.count > 0 && fixedWidth > 0 else { return 0 } let size = CGSize(width:fixedWidth, height:CGFloat.greatestFiniteMagnitude) let text = self as NSString let rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: [NSFontAttributeName : font], context:nil) return rect.size.height } /** Get the width with the string. - parameter attributes: The string attributes. - returns: The width. */ func widthWithStringAttributes(attributes : [String : AnyObject]) -> CGFloat { guard self.characters.count > 0 else { return 0 } let size = CGSize(width:CGFloat.greatestFiniteMagnitude, height:0) let text = self as NSString let rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: attributes, context:nil) return rect.size.width } /** Get the width with the string. - parameter font: The font. - returns: The string's width. */ func widthWithFont(font : UIFont = UIFont.systemFont(ofSize: 18)) -> CGFloat { guard self.characters.count > 0 else { return 0 } let size = CGSize(width:CGFloat.greatestFiniteMagnitude, height:0) let text = self as NSString let rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: [NSFontAttributeName : font], context:nil) return rect.size.width } }

转载请注明原文地址: https://www.6miu.com/read-200194.html

最新回复(0)