1. 程式人生 > >獲取字串的寬、高 (Swift 4)

獲取字串的寬、高 (Swift 4)

為方便呼叫,封裝普通字串與富文字的寬高方法

/**獲取字串尺寸--私有方法*/

private func getNormalStrSize(str: String? = nil, attriStr: NSMutableAttributedString? = nil, font: CGFloat, w: CGFloat, h: CGFloat) -> CGSize {
    if str != nil {
        let strSize = (str! as NSString).boundingRect(with: CGSize(width: w, height: h), options: .usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: font)], context: nil).size
        return strSize
    }
    
    if attriStr != nil {
        let strSize = attriStr!.boundingRect(with: CGSize(width: w, height: h), options: .usesLineFragmentOrigin, context: nil).size
        return strSize
    }
    
    return CGSize.zero
   
}

/**獲取字串高度H*/

func getNormalStrH(str: String, strFont: CGFloat, w: CGFloat) -> CGFloat {
    return getNormalStrSize(str: str, font: strFont, w: w, h: CGFloat.greatestFiniteMagnitude).height
}

/**獲取字串寬度W*/

func getNormalStrW(str: String, strFont: CGFloat, h: CGFloat) -> CGFloat {
    return getNormalStrSize(str: str, font: strFont, w: CGFloat.greatestFiniteMagnitude, h: h).width
}

/**獲取富文字字串高度H*/

func getAttributedStrH(attriStr: NSMutableAttributedString, strFont: CGFloat, w: CGFloat) -> CGFloat {
    return getNormalStrSize(attriStr: attriStr, font: strFont, w: w, h: CGFloat.greatestFiniteMagnitude).height
}

/**獲取富文字字串寬度W*/

func getAttributedStrW(attriStr: NSMutableAttributedString, strFont: CGFloat, h: CGFloat) -> CGFloat {
    return getNormalStrSize(attriStr: attriStr, font: strFont, w: CGFloat.greatestFiniteMagnitude, h: h).width
}