Make a UIButton programmatically in Swift

后端 未结 19 1822
死守一世寂寞
死守一世寂寞 2020-11-27 10:00

I am trying to build UI\'s programmatically. How do I get this action working? I am developing with Swift.

Code in viewDidLoad:

over         


        
19条回答
  •  萌比男神i
    2020-11-27 10:47

    In iOS 12, Swift 4.2 & XCode 10.1

    //For system type button
    let button = UIButton(type: .system)
    button.frame = CGRect(x: 100, y: 250, width: 100, height: 50)
    //        button.backgroundColor = .blue
    button.setTitle("Button", for: .normal)
    button.setTitleColor(.white, for: .normal)
    button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 13.0)
    button.titleLabel?.textAlignment = .center//Text alighment center
    button.titleLabel?.numberOfLines = 0//To display multiple lines in UIButton
    button.titleLabel?.lineBreakMode = .byWordWrapping//By word wrapping
    button.tag = 1//To assign tag value
    button.btnProperties()//Call UIButton properties from extension function
    button.addTarget(self, action:#selector(self.buttonClicked), for: .touchUpInside)
    self.view.addSubview(button)
    
    //For custom type button (add image to your button)
    let button2 = UIButton(type: .custom)
    button2.frame = CGRect(x: 100, y: 400, width: 100, height: 50)
    //        button2.backgroundColor = .blue
    button2.setImage(UIImage.init(named: "img.png"), for: .normal)
    button2.tag = 2
    button2.btnProperties()//Call UIButton properties from extension function
    button2.addTarget(self, action:#selector(self.buttonClicked), for: .touchUpInside)
    self.view.addSubview(button2)
    
    @objc func buttonClicked(sender:UIButton) {
        print("Button \(sender.tag) clicked")
    }
    
    //You can add UIButton properties like this also
    extension UIButton {
        func btnProperties() {
            layer.cornerRadius = 10//Set button corner radious
            clipsToBounds = true
            backgroundColor = .blue//Set background colour
            //titleLabel?.textAlignment = .center//add properties like this
        }
    }
    

提交回复
热议问题