UIButton+Ex.swift 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // UIButton+Ex.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. extension UIButton {
  8. func setLocalizedImageAndTitle(image: UIImage?, title: String, for state: UIControl.State) {
  9. setImage(image?.imageFlippedForRightToLeftLayoutDirection(), for: state)
  10. setTitle(title, for: state)
  11. // 根据布局方向设置 titleEdgeInsets 和 imageEdgeInsets
  12. if UIView.userInterfaceLayoutDirection(for: semanticContentAttribute) == .rightToLeft {
  13. titleEdgeInsets = UIEdgeInsets(top: 0, left: -10, bottom: 0, right: 10)
  14. imageEdgeInsets = UIEdgeInsets(top: 0, left: -10, bottom: 0, right: 0)
  15. contentHorizontalAlignment = .right
  16. } else {
  17. titleEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: -10)
  18. imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  19. contentHorizontalAlignment = .leading
  20. }
  21. }
  22. func setLocalizedImage(_ image: UIImage?, for state: UIControl.State) {
  23. guard let image = image else {
  24. setImage(nil, for: state)
  25. return
  26. }
  27. setImage(image.imageFlippedForRightToLeftLayoutDirection(), for: state)
  28. }
  29. func setLocalizedBackgroundImage(_ image: UIImage?, for state: UIControl.State) {
  30. guard let image = image else {
  31. setBackgroundImage(nil, for: state)
  32. return
  33. }
  34. setBackgroundImage(image.imageFlippedForRightToLeftLayoutDirection(), for: state)
  35. }
  36. }