// // UIBarButtonItem+Ext.swift // BadgeAppearance // // Created by InKwon Devik Kim on 25/06/2019. // Copyright © 2019 InKwon Devik Kim. All rights reserved. // import UIKit // MARK: - FOR Badge extension UIBarButtonItem { /* * Assign badge with only text. */ /// badge /// /// - Parameter text: badge's text @objc public func badge(text: String?) { badge(text: text, appearance: BadgeAppearance()) } /// badge /// /// - Parameters: /// - badgeText: badge's text /// - appearance: badge's appearance public func badge(text badgeText: String?, appearance: BadgeAppearance = BadgeAppearance()) { if let view = badgeViewHolder { getView(in: view).badge(text: badgeText, appearance: appearance) } else { NSLog("Attempted setting badge with value '\(badgeText ?? "nil")' on a nil UIBarButtonItem view.") } } private var badgeViewHolder: UIView? { return value(forKey: "view") as? UIView } private func getView(in holder: UIView) -> UIView { for subItem in holder.subviews { if "\(type(of: subItem))" == "_UIModernBarButton" { return subItem } } return holder } }