//
//  UILabel+Ex.swift
//  TSLiveWallpaper
//
//  Created by 100Years on 2024/12/20.
//

extension UILabel {
    /// 快速创建 UILabel
    /// - Parameters:
    ///   - text: 文本内容
    ///   - font: 字体
    ///   - textColor: 文本颜色
    ///   - textAlignment: 文本对齐方式
    ///   - numberOfLines: 行数，默认 1
    ///   - backgroundColor: 背景颜色
    ///   - adjustsFontSizeToFitWidth: 是否自适应宽度，默认 false
    ///   - cornerRadius: 圆角，默认 0
    /// - Returns: 配置好的 UILabel 实例
    static func createLabel(text: String? = nil,
                            font: UIFont? = nil,
                            textColor: UIColor? = nil,
                            textAlignment: NSTextAlignment = .left,
                            numberOfLines: Int = 1,
                            backgroundColor: UIColor? = nil,
                            adjustsFontSizeToFitWidth: Bool = false,
                            cornerRadius: CGFloat = 0) -> UILabel {
        let label = UILabel()
        
        // 设置文本内容
        label.text = text
        
        // 设置字体
        if let font = font {
            label.font = font
        }
        
        // 设置文本颜色
        if let textColor = textColor {
            label.textColor = textColor
        }
        
        // 设置文本对齐方式
        label.textAlignment = textAlignment
        
        // 设置行数
        label.numberOfLines = numberOfLines
        
        // 设置背景颜色
        if let backgroundColor = backgroundColor {
            label.backgroundColor = backgroundColor
        }
        
        // 设置是否自适应宽度
        label.adjustsFontSizeToFitWidth = adjustsFontSizeToFitWidth
        
        // 设置圆角
        if cornerRadius > 0 {
            label.layer.cornerRadius = cornerRadius
            label.layer.masksToBounds = true
        }
        
        return label
    }
}



extension UILabel {
    var textHeight: CGFloat {
        if let textHeight = text?.height(ofFont: font, maxWidth: width > 0 ? width : .max) {
            return textHeight
        }
        return 0
    }
    var textWidth: CGFloat {
        if let textWidth = text?.width(ofFont: font, maxHeight: height > 0 ? height : .max) {
            return textWidth
        }
        return 0
    }
    var textSize: CGSize {
        if let textSize = text?.size(ofFont: font, maxWidth: .max, maxHeight: .max) {
            return textSize
        }
        return .zero
    }
}
