我如何以编程方式创建图形元素(如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:以编程方式创建Ui按钮

let myButton = UIButton()

myButton.titleLabel!.frame = CGRectMake(15, 54, 300, 500)
myButton.titleLabel!.text = "Button Label"
myButton.titleLabel!.textColor = UIColor.redColor()
myButton.titleLabel!.textAlignment = .Center
self.view.addSubview(myButton)

我通常会设置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) 
        }
    }

这是可能的。除了使用swift语法之外,您几乎可以以相同的方式完成所有操作。例如,你可以用这样的代码创建一个UIButton:

 var button: UIButton = UIButton(frame: CGRectMake(0, 0, 100, 100))

如何使用Swift 3.0来做到这一点。

func createButton() {
    let button = UIButton(type: .system)
    button.frame = CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0)
    button.setTitle(NSLocalizedString("Button", comment: "Button"), for: .normal)
    button.backgroundColor = .green
    button.addTarget(self, action: #selector(buttonAction(sender:)), for: .touchUpInside)
    view.addSubview(button)
}

@objc func buttonAction(sender: UIButton) {
    print("Button pushed")
}
    // UILabel:
    let label = UILabel()
    label.frame = CGRectMake(35, 100, 250, 30)
    label.textColor = UIColor.blackColor()
    label.textAlignment = NSTextAlignment.Center
    label.text = "Hello World"
    self.view.addSubview(label)

    // UIButton:
    let btn: UIButton = UIButton(type: UIButtonType.Custom) as UIButton
    btn.frame = CGRectMake(130, 70, 60, 20)
    btn.setTitle("Click", forState: UIControlState.Normal)
    btn.setTitleColor(UIColor.blackColor(), forState: .Normal)
    btn.addTarget(self, action:Selector("clickAction"), forControlEvents: UIControlEvents.TouchUpInside)
    view.addSubview(btn)


    // Button Action:
    @IBAction func clickAction(sender:AnyObject)
    {
        print("Click Action")
    }