You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.2 KiB

5 years ago
  1. //
  2. // UIBarButtonItem+Ext.swift
  3. // BadgeAppearance
  4. //
  5. // Created by InKwon Devik Kim on 25/06/2019.
  6. // Copyright © 2019 InKwon Devik Kim. All rights reserved.
  7. //
  8. import UIKit
  9. // MARK: - FOR Badge
  10. extension UIBarButtonItem {
  11. /*
  12. * Assign badge with only text.
  13. */
  14. /// badge
  15. ///
  16. /// - Parameter text: badge's text
  17. @objc public func badge(text: String?) {
  18. badge(text: text, appearance: BadgeAppearance())
  19. }
  20. /// badge
  21. ///
  22. /// - Parameters:
  23. /// - badgeText: badge's text
  24. /// - appearance: badge's appearance
  25. public func badge(text badgeText: String?, appearance: BadgeAppearance = BadgeAppearance()) {
  26. if let view = badgeViewHolder {
  27. getView(in: view).badge(text: badgeText, appearance: appearance)
  28. } else {
  29. NSLog("Attempted setting badge with value '\(badgeText ?? "nil")' on a nil UIBarButtonItem view.")
  30. }
  31. }
  32. private var badgeViewHolder: UIView? {
  33. return value(forKey: "view") as? UIView
  34. }
  35. private func getView(in holder: UIView) -> UIView {
  36. for subItem in holder.subviews {
  37. if "\(type(of: subItem))" == "_UIModernBarButton" {
  38. return subItem
  39. }
  40. }
  41. return holder
  42. }
  43. }