我如何以编程方式创建图形元素(如UIButton)在Swift?我试图创建和添加按钮到一个视图,但不能。


当前回答

API没有改变——只有语法改变了。你可以创建一个UIButton并像这样添加它:

var button = UIButton(frame: CGRectMake(0, 0, 50, 50))
self.view.addSubview(button) // assuming you're in a view controller

其他回答

在Swift 4.2中编写下面的示例代码,用于以编程方式添加按钮。

override func viewDidLoad() {
    super.viewDidLoad()
        let myButton = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
        myButton.backgroundColor = .green
        myButton.setTitle("Hello UIButton", for: .normal)
        myButton.addTarget(self, action: #selector(myButtonAction), for: .touchUpInside)
        self.view.addSubview(myButton)
}

 @objc func myButtonAction(sender: UIButton!) {
    print("My Button tapped")
}
            let myFirstButton = UIButton()
            myFirstButton.setTitle("Software Button", forState: .Normal)
            myFirstButton.setTitleColor(UIColor.redColor(), forState: .Normal)
            myFirstButton.frame = CGRectMake(100, 300, 150, 50)
            myFirstButton.backgroundColor = UIColor.purpleColor()
            myFirstButton.layer.cornerRadius = 14
            myFirstButton.addTarget(self, action: "pressed:", forControlEvents: .TouchUpInside)
            self.view.addSubview(myFirstButton)
            myFirstButton.hidden=true
            nameText.delegate = self


func pressed(sender: UIButton!) {
        var alertView = UIAlertView()
        alertView.addButtonWithTitle("Ok")
        alertView.title = "title"
        alertView.message = "message"
        alertView.show();
    }

我通常会设置uibutton的扩展。斯威夫特5。

let button: UIButton = UIButton()
override func viewDidLoad() {
        super.viewDidLoad()
     button.setup(title: "OK", x: 100, y: 430, width: 220, height: 80, color: .yellow)
        buttonD.setTitleColor(.black, for: .normal)

}
extension UIButton {
    func setup(title: String, x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat, color: UIColor){
        frame = CGRect(x: x, y: y, width: width, height: height)
        backgroundColor = color
        setTitle(title , for: .normal) 
        }
    }

是的,在模拟器里。有时它不会识别选择器,这似乎是一个错误。即使我面对的不是你的代码,然后我只是改变了动作名称(选择器)。它的工作原理

let buttonPuzzle:UIButton = UIButton(frame: CGRectMake(100, 400, 100, 50))
buttonPuzzle.backgroundColor = UIColor.greenColor()
buttonPuzzle.setTitle("Puzzle", forState: UIControlState.Normal)
buttonPuzzle.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
buttonPuzzle.tag = 22;
self.view.addSubview(buttonPuzzle)

选择器函数在这里:

func buttonAction(sender:UIButton!)
{

    var btnsendtag:UIButton = sender
    if btnsendtag.tag == 22 {            
        //println("Button tapped tag 22")
    }
}

步骤1:创建一个新项目

步骤2:在ViewController.swift中

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // CODE
        let btn = UIButton(type: UIButtonType.System) as UIButton        
        btn.backgroundColor = UIColor.blueColor()
        btn.setTitle("CALL TPT AGENT", forState: UIControlState.Normal)
        btn.frame = CGRectMake(100, 100, 200, 100)
        btn.addTarget(self, action: "clickMe:", forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(btn)

    }

    func clickMe(sender:UIButton!) {
      print("CALL")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}