Styling the cancel button in a UISearchBar

You can use UIAppearance to style the cancel button without iterating subviews of the UISearchBar, but the UIButton header does not currently have any methods annotated with UI_APPEARANCE_SELECTOR.

EDIT: Drill down the subviews till you get that cancel button

But this usually returns nil until
searchBar.setShowsCancelButton(true, animated: true) is called.

extension UISearchBar {

var cancelButton : UIButton? {
    if let view = self.subviews.first {
        for subView in view.subviews {
            if let cancelButton = subView as? UIButton {
                return cancelButton
            }
        }
    }
    return nil
}
}

Leave a Comment