首页 文章

如何以编程方式创建按钮?

提问于
浏览
219

如何在Swift中以编程方式创建图形元素(如 UIButton )?我试图在视图中创建并添加按钮,但无法进行 .

21 回答

  • 13

    Swift:Ui Button以编程方式创建

    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)
    
  • 95
    Uilabel code 
    
    var label: UILabel = UILabel()
    label.frame = CGRectMake(50, 50, 200, 21)
    label.backgroundColor = UIColor.blackColor()
    label.textColor = UIColor.whiteColor()
    label.textAlignment = NSTextAlignment.Center
    label.text = "test label"
    self.view.addSubview(label)
    
  • 3

    以下是使用 targetAction 以编程方式添加 UIButton 的完整解决方案 .
    Swift 2.2

    override func viewDidLoad() {
      super.viewDidLoad()
    
      let button = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
      button.backgroundColor = .greenColor()
      button.setTitle("Test Button", forState: .Normal)
      button.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)
    
      self.view.addSubview(button)
    }
    
    func buttonAction(sender: UIButton!) {
      print("Button tapped")
    }
    

    最好使用 NSLayoutConstraint 而不是 frame 来正确放置每个iPhone屏幕的按钮 .

    已更新代码 Swift 3.1

    override func viewDidLoad() {
      super.viewDidLoad()
    
      let button = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
      button.backgroundColor = .green
      button.setTitle("Test Button", for: .normal)
      button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    
      self.view.addSubview(button)
    }
    
    func buttonAction(sender: UIButton!) {
      print("Button tapped")
    }
    

    更新了代码 Swift 4.2

    override func viewDidLoad() {
      super.viewDidLoad()
    
      let button = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
      button.backgroundColor = .green
      button.setTitle("Test Button", for: .normal)
      button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    
      self.view.addSubview(button)
    }
    
    @objc func buttonAction(sender: UIButton!) {
      print("Button tapped")
    }
    

    如果 func buttonAction 被声明为 privateinternal ,则上述操作仍然有效 .

  • 13

    您可以通过这种方式以编程方式添加UIButton,UIlable和UITextfield .

    UIButton代码

    // var button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
    let button = UIButton(type: .System) // let preferred over var here
    button.frame = CGRectMake(100, 100, 100, 50)
    button.backgroundColor = UIColor.greenColor()
    button.setTitle("Button", forState: UIControlState.Normal)
    button.addTarget(self, action: "Action:", forControlEvents: UIControlEvents.TouchUpInside)
    self.view.addSubview(button)
    

    UILabel代码

    var label: UILabel = UILabel()
    label.frame = CGRectMake(50, 50, 200, 21)
    label.backgroundColor = UIColor.blackColor()
    label.textColor = UIColor.whiteColor()
    label.textAlignment = NSTextAlignment.Center
    label.text = "test label"
    self.view.addSubview(label)
    

    UITextField代码

    var txtField: UITextField = UITextField()
    txtField.frame = CGRectMake(50, 70, 200, 30)
    txtField.backgroundColor = UIColor.grayColor()
    self.view.addSubview(txtField)
    

    希望这对你有所帮助 .

  • 0

    For Swift 3

    let button = UIButton()
    button.frame = CGRect(x: self.view.frame.size.width - 60, y: 60, width: 50, height: 50)
    button.backgroundColor = UIColor.red
    button.setTitle("Name your Button ", for: .normal)
    button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
    self.view.addSubview(button)
    
    func buttonAction(sender: UIButton!) {
        print("Button tapped")
    }
    

    For Swift 4

    let button = UIButton()
     button.frame = CGRect(x: self.view.frame.size.width - 60, y: 60, width: 50, height: 50)
     button.backgroundColor = UIColor.red
     button.setTitle("Name your Button ", for: .normal)
     button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
     self.view.addSubview(button)
    
     @objc func buttonAction(sender: UIButton!) {
        print("Button tapped")
     }
    
  • 0

    Swift 3

    let btn = UIButton(type: .custom) as UIButton
    btn.backgroundColor = .blue
    btn.setTitle("Button", for: .normal)
    btn.frame = CGRect(x: 100, y: 100, width: 200, height: 100)
    btn.addTarget(self, action: #selector(clickMe), for: .touchUpInside)
    self.view.addSubview(btn)
    
    func clickMe(sender:UIButton!) {
      print("Button Clicked")
    }
    

    产量

    enter image description here

  • 0

    如何使用 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")
    }
    
  • 0

    这对我很有用,#DynamicButtonEvent #IOS #Swift #Xcode

    func setupButtonMap(){
        let mapButton = UIButton(type: .system)
        mapButton.setImage(#imageLiteral(resourceName: "CreateTrip").withRenderingMode(.alwaysOriginal), for: .normal)
        mapButton.frame = CGRect(x: 0, y: 0, width: 34, height: 34)
        mapButton.contentMode = .scaleAspectFit
        mapButton.backgroundColor = UIColor.clear
        mapButton.addTarget(self, action: #selector(ViewController.btnOpenMap(_:)), for: .touchUpInside)
        navigationItem.leftBarButtonItem = UIBarButtonItem(customView: mapButton)
        }
    @IBAction func btnOpenMap(_ sender: Any?) {
        print("Successful")
    }
    
  • 3
    var sampleButton:UIButton?
    
     override func viewDidLoad() {
      super.viewDidLoad()
    
     }
     override func viewDidAppear(animated: Bool) {
    
      sampleButton = UIButton(type: .RoundedRect)
      //sampleButton.frame = CGRect(x:50, y:500, width:70, height:50)
    
      sampleButton!.setTitle("Sample \n UI Button", forState: .Normal)
      sampleButton!.titleLabel?.lineBreakMode = .ByWordWrapping
      sampleButton!.titleLabel?.textAlignment = .Center
      sampleButton!.setTitleColor(UIColor.whiteColor(), forState: .Normal)
      sampleButton!.layer.cornerRadius = 6
      sampleButton!.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.6)
      sampleButton?.tintColor =  UIColor.brownColor()
    
    
      //Add padding around text
      sampleButton!.titleEdgeInsets = UIEdgeInsetsMake(-10,-10,-10,-10)
      sampleButton!.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5)
    
      //Action set up
      sampleButton!.addTarget(self, action: "sampleButtonClicked", forControlEvents: .TouchUpInside)
      self.view.addSubview(sampleButton!)
    
    
      //Button Constraints:
      sampleButton!.translatesAutoresizingMaskIntoConstraints = false
    
      //To anchor above the tab bar on the bottom of the screen:
      let bottomButtonConstraint = sampleButton!.bottomAnchor.constraintEqualToAnchor(bottomLayoutGuide.topAnchor, constant: -20)
    
      //edge of the screen in InterfaceBuilder:
      let margins = view.layoutMarginsGuide
      let leadingButtonConstraint = sampleButton!.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor)
    
      bottomButtonConstraint.active = true
      leadingButtonConstraint.active = true
    
    
     }
     func sampleButtonClicked(){
    
      print("sample Button Clicked")
    
     }
    
  • 6

    API没有改变 - 只有语法有 . 你可以制作一个 UIButton 并像这样添加它:

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

    在viewDidLoad中添加此代码
    //添加Button

    var button=UIButton(frame: CGRectMake(150, 240, 75, 30))
                button.setTitle("Next", forState: UIControlState.Normal)
                button.addTarget(self, action: "buttonTapAction:", forControlEvents: UIControlEvents.TouchUpInside)
                button.backgroundColor = UIColor.greenColor()
                self.view.addSubview(button)
    

    将此功能写在它外面,点击按钮时会调用此功能

    func buttonTapAction(sender:UIButton!)
    {
        println("Button is working")
    }
    
  • -1

    In Swift 2 and iOS 9.2.1

    var button: UIButton = UIButton(type: UIButtonType.Custom) as UIButton
    self.button.frame = CGRectMake(130, 70, 60, 20)
    self.button.setTitle("custom button", forState: UIControlState.Normal)
    self.button.addTarget(self, action:"buttonActionFuncName", forControlEvents: UIControlEvents.TouchUpInside)
    self.button.setTitleColor(UIColor.blackColor(), forState: .Normal)
    self.button.layer.borderColor = UIColor.blackColor().CGColor
    self.button.titleLabel?.font = UIFont(name: "Helvetica-Bold", size: 13)
    self.view.addSubview(self.button)
    
  • 16

    你可以这样创建,你可以像这样添加动作....

    import UIKit
    
    let myButton = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
    
    init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)
    {       super.init(nibName: nibName, bundle: nibBundle) 
            myButton.targetForAction("tappedButton:", withSender: self)
    }
    
    func tappedButton(sender: UIButton!)
    { 
         println("tapped button")
    }
    
  • 360

    有可能的 . 除了使用swift语法之外,您几乎以同样的方式执行所有操作 . 例如,你可以在这样的代码中创建一个UIButton:

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

    对于从故事板创建UIButton:1 - 将UIButton对象从对象库拖到故事板文件2中的ViewController - 显示助手编辑器3 - 从UIButton创建上方右键拖动到您的类中 . 结果如下:

    @IBAction func buttonActionFromStoryboard(sender: UIButton)
    {
        println("Button Action From Storyboard")
    }
    

    要以编程方式创建UIButton:1-写入“override func viewDidLoad()”:

    let uiButton    = UIButton.buttonWithType(UIButtonType.System) as UIButton
            uiButton.frame  = CGRectMake(16, 116, 288, 30)
            uiButton.setTitle("Second", forState: UIControlState.Normal);
            uiButton.addTarget(self, action: "buttonActionFromCode:", forControlEvents: UIControlEvents.TouchUpInside)
            self.view.addSubview(uiButton)
    

    2-添加IBAction函数:

    @IBAction func buttonActionFromCode(sender:UIButton)
    {
        println("Button Action From Code")
    }
    
  • 29
    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();
        }
    
  • 6

    是的在模拟器中 . 有时它不会识别选择器似乎有一个错误 . 即使我不面对你的代码,我只是改变了动作名称(选择器) . 有用

    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")
        }
    }
    
  • 6
    // 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")
        }
    
  • 4

    第1步:制作一个新项目

    enter image description here

    第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.
        }
    
    
    }
    
  • 0

    enter image description here

    func viewDidLoad(){
                        saveActionButton = UIButton(frame: CGRect(x: self.view.frame.size.width - 60, y: 0, width: 50, height: 50))
                        self.saveActionButton.backgroundColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 0.7)
                        saveActionButton.addTarget(self, action: #selector(doneAction), for: .touchUpInside)
                        self.saveActionButton.setTitle("Done", for: .normal)
                        self.saveActionButton.layer.cornerRadius = self.saveActionButton.frame.size.width / 2
                        self.saveActionButton.layer.borderColor = UIColor.darkGray.cgColor
                        self.saveActionButton.layer.borderWidth = 1
                        self.saveActionButton.center.y = self.view.frame.size.height - 80
                        self.view.addSubview(saveActionButton)
            }
    
              func doneAction(){
              print("Write your own logic")
             }
    
  • 1
    override func viewDidLoad() {
    
    super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
        var imageView = UIImageView(frame: CGRectMake(100, 150, 150, 150));
        var image = UIImage(named: "BattleMapSplashScreen.png");
        imageView.image = image;
        self.view.addSubview(imageView);
    
    }
    

相关问题