Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add system icons for a UIButton programmatically?

Tags:

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?

enter image description here

like image 434
DeyaEldeen Avatar asked Jun 12 '16 08:06

DeyaEldeen


2 Answers

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.

Interface Builder icons

like image 100
Marek Loose Avatar answered Oct 18 '22 10:10

Marek Loose


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) 
like image 41
Manikandan Avatar answered Oct 18 '22 11:10

Manikandan