String+HandleTool.swift 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. //
  2. // String+HandleTool.swift
  3. // map_amap_ios
  4. //
  5. // Created by 诺诺诺的言 on 2025/7/22.
  6. //
  7. import Foundation
  8. extension String {
  9. func width(withConstrainedHeight height: CGFloat, font: UIFont) -> CGFloat {
  10. let constraintRect = CGSize(width: .greatestFiniteMagnitude, height: height)
  11. let boundingBox = self.boundingRect(
  12. with: constraintRect,
  13. options: [.usesLineFragmentOrigin, .usesFontLeading],
  14. attributes: [NSAttributedString.Key.font: font],
  15. context: nil
  16. )
  17. return ceil(boundingBox.width)
  18. }
  19. func height(withConstrainedWidth width: CGFloat, font: UIFont) -> CGFloat {
  20. let constraintRect = CGSize(width: width, height: .greatestFiniteMagnitude)
  21. let boundingBox = self.boundingRect(
  22. with: constraintRect,
  23. options: [.usesLineFragmentOrigin, .usesFontLeading],
  24. attributes: [NSAttributedString.Key.font: font],
  25. context: nil
  26. )
  27. return ceil(boundingBox.height)
  28. }
  29. }