Files
yingmeng-ios-switf/yinmeng-ios/Extension/String/String+.swift
2024-03-05 14:04:09 +08:00

69 lines
1.9 KiB
Swift

//
// String+.swift
// yinmeng-ios
//
// Created by yinmeng on 2024/2/23.
//
import Foundation
import CommonCrypto
extension String {
func encrypt() -> String? {
let str = MAIDESEncryptTool.encryptUseDES(self, key: DesKey)
return str
}
func decrypt() -> String? {
let str = MAIDESEncryptTool.decryptUseDES(self, key: DesKey)
return str
}
func decrypt(key:String) -> String? {
let str = MAIDESEncryptTool.decryptUseDES(self, key: key)
return str
}
}
extension String {
///
/// - Parameters:
/// - begin:
/// - count:
/// - Returns:
func substring(start: Int, _ count: Int) -> String {
let begin = index(startIndex, offsetBy: max(0, start))
let end = index(startIndex, offsetBy: min(count, start + count))
return String(self[begin..<end])
}
///
var isBlank: Bool {
let trimmedStr = self.trimmingCharacters(in: .whitespacesAndNewlines)
return trimmedStr.isEmpty
}
func boundingRect(with constrainedSize: CGSize, font: UIFont, lineSpacing: CGFloat? = nil) -> CGSize {
let attritube = NSMutableAttributedString(string: self)
let range = NSRange(location: 0, length: attritube.length)
attritube.addAttributes([NSAttributedString.Key.font: font], range: range)
if lineSpacing != nil {
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpacing ?? 0
attritube.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: range)
}
let rect = attritube.boundingRect(with: constrainedSize, options: [.usesLineFragmentOrigin, .usesFontLeading], context: nil)
var size = rect.size
if let currentLineSpacing = lineSpacing {
let spacing = size.height - font.lineHeight
if spacing <= currentLineSpacing && spacing > 0 {
size = CGSize(width: size.width, height: font.lineHeight)
}
}
return size
}
}