It's easy to add a custom image or a background for a UIButton
, but there seems to be no programmatic way to set one of the following default iOS icons for a UIButton
, I know it can be applied to navigation bar buttons, I don't need that, I want to apply it to a simple UIButton
, any hints?
For Swift 5 the syntax is:
button.setImage(UIImage(systemName: "search"), for: .normal)
You can also set the weight of the icon by adding SymbolConfiguration
:
let boldConfig = UIImage.SymbolConfiguration(weight: .bold) let boldSearch = UIImage(systemName: "search", withConfiguration: boldConfig) button.setImage(boldSearch, for: .normal)
See: Apple documentation for available names (API column) or go to Interface Builder, select UIButton and in the Attributes Inspector select Image which will give you list of all available icons.
import UIKit extension UIImage { public convenience init?(_ systemItem: UIBarButtonItem.SystemItem) { guard let sysImage = UIImage.imageFrom(systemItem: systemItem)?.cgImage else { return nil } self.init(cgImage: sysImage) } private class func imageFrom(systemItem: UIBarButtonItem.SystemItem) -> UIImage? { let sysBarButtonItem = UIBarButtonItem(barButtonSystemItem: systemItem, target: nil, action: nil) //MARK:- Adding barButton into tool bar and rendering it. let toolBar = UIToolbar() toolBar.setItems([sysBarButtonItem], animated: false) toolBar.snapshotView(afterScreenUpdates: true) if let buttonView = sysBarButtonItem.value(forKey: "view") as? UIView{ for subView in buttonView.subviews { if subView is UIButton { let button = subView as! UIButton let image = button.imageView!.image! return image } } } return nil } }
This is an example of how do we use it:
let button = UIButton() ; let systemImage = UIImage(systemItem: .trash) ; button.setImage(systemImage, for: .normal)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With