प्रोग्राम को बटन कैसे बनाएं?


256

मैं UIButtonस्विफ्ट में क्रमिक रूप से चित्रमय तत्व (जैसे ) कैसे बना सकता हूं ? मैंने एक दृश्य में बटन बनाने और जोड़ने की कोशिश की, लेकिन सक्षम नहीं था।

जवाबों:


414

यहाँ टार्गेटेशन केUIButton साथ प्रोग्रामेटिक रूप से जोड़ने का पूरा समाधान है । स्विफ्ट 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")
}

प्रत्येक iPhone स्क्रीन के लिए बटन को सही ढंग NSLayoutConstraintसे frameरखने के बजाय इसका उपयोग करना बेहतर है ।

अद्यतन स्विफ्ट 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")
}

स्विफ्ट 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घोषित है privateया internal


3
और यह मत भूलो कि आपके लक्षित वर्ग को NSObject से लिया जाना चाहिए
एलेक्सी ग्लोबचैस्टी

7
और यह मत भूलिए कि जो कार्य आपकी क्रिया है वह निजी नहीं हो सकता है
पाब्लो ज़बिगी जब्लॉन्स्की

2
यह अजीब है कि उन्होंने एक फ़ंक्शन का उपयोग करने के बजाय स्ट्रिंग के साथ कार्रवाई करने का फैसला किया (स्ट्रिंग्स के साथ यह चयन से भी अधिक असुरक्षित है)। ओबज-सी के साथ पीछे की संगतता शायद :(
Ixx

क्या बटन कॉर्नर त्रिज्या को बदलने का कोई तरीका है?
मोरालकोड

3
स्विफ्ट 1.2 डाउनकास्ट के रूप में अब "के रूप में" के साथ नहीं किया जा सकता है, उन्हें "के रूप में" के साथ "मजबूर" होना चाहिए।
तन्मयजय

100

आप 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)

उइलाबेल कोड

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)

आशा है कि यह आपके लिए उपयोगी है।


तो, आपको UIButton से पहले साझा की गई कोड की पहली पंक्ति में "as" ऑपरेटर की आवश्यकता क्यों है ...?
झुमझम

buttonWithType रिटर्न AnyObject टाइप करता है, इसलिए आपको इसे UIButton के रूप में डालना होगा
क्रिस C

1
@ElgsQianChen आप अपनी आवश्यकता के अनुसार इस कोड का उपयोग कर सकते हैं। उदाहरण के लिए आप UIButton जोड़ना चाहते हैं जब दृश्य दिखाई देता है तो आप viewWillAppear में कोड जोड़ते हैं।
अख्तर

1
स्विफ्ट 1.2 डाउनकास्ट के रूप में अब "के रूप में" के साथ नहीं किया जा सकता है, उन्हें "के रूप में" के साथ "मजबूर" होना चाहिए।
तन्मयजय

उद्देश्य सी में भाग लेने वाले लोगों के लिए स्ट्रिंग स्ट्रिंग शाब्दिक चेतावनी दी गई सही उत्तर है: stackoverflow.com/a/36308587/968848
n.by.n

61

स्विफ्ट 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("your Button Name", for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
self.view.addSubview(button)

func buttonAction(sender: UIButton!) {
    print("Button tapped")
}

स्विफ्ट 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")
 }

button.frame = (frame: CGRect(x: self.view.frame.size.width - 60, y: 20, width: 50, height: 50))होना चाहिएbutton.frame = CGRect(x: self.view.frame.size.width - 60, y: 20, width: 50, height: 50)
JC

2
"Func" से पहले स्विफ्ट 4 में "@objc" को जोड़ना होगा।
रुसलान लेशचेंको

29

स्विफ्ट 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")
}

उत्पादन

यहां छवि विवरण दर्ज करें


धन्यवाद, M8! आज स्विफ्ट के साथ शुरुआत करना सब कुछ अजीब है (:
फेलिप

17

स्विफ्ट 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")
}

16
 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")

 }

14

एपीआई नहीं बदला है - केवल वाक्य रचना है। आप UIButtonइसे इस तरह से बना और जोड़ सकते हैं :

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

7

आप इस तरह बना सकते हैं और आप इस तरह कार्रवाई भी जोड़ सकते हैं ...।

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")
}

क्षमा करें, लेकिन संकलक ने लाइन में त्रुटि भेजी - self.view.addSubview (देखें: myButton)। अगली त्रुटि है: "एक्स्ट्रासियस तर्क लेबल 'दृश्य:' कॉल में"
val_lek

कृपया इस लाइन को हटाएं self.view.addSubview (देखें: myButton) अधिक जानकारी के लिए मेरा संपादित उत्तर देखें।
धर्मबीर सिंह

धन्यवाद, लेकिन मैं self.view पर इस बटन को कैसे जोड़ सकता हूं?
val_lek

6

इस कोड को viewDidLoad में
जोड़ें // बटन जोड़ें

            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")
}

6

स्विफ्ट 2 और आईओएस 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)

6

स्विफ्ट 5 के लिए स्विफ्ट 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")
 }

4

हो सकता है। स्विफ्ट सिंटैक्स का उपयोग करने के अलावा आप सब कुछ उसी तरह से करते हैं। उदाहरण के लिए आप इस तरह कोड में एक UIButton बना सकते हैं:

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

3

स्टोरीबोर्ड से UIButton बनाने के लिए: 1 - ऑब्जेक्ट लाइब्रेरी से UIButton ऑब्जेक्ट को स्टोरीबोर्ड फ़ाइल में ViewController पर खींचें 2 - सहायक संपादक 3 दिखाएं - UIButton से दायाँ क्लिक के साथ खींचें अपनी कक्षा में ऊपर बनाएं। परिणाम निम्नलिखित है:

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

UIButton प्रोग्रामेटिक रूप से बनाने के लिए: 1- "ओवरराइड फंक व्यूडीडलॉड ()" में लिखें:

        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 func जोड़ें:

@IBAction func buttonActionFromCode(sender:UIButton)
{
    println("Button Action From Code")
}

स्विफ्ट 1.2 डाउनकास्ट के रूप में अब "के रूप में" के साथ नहीं किया जा सकता है, उन्हें "के रूप में" के साथ "मजबूर" होना चाहिए।
तन्मयजय

3
            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();
    }

3

सिम्युलेटर में हाँ। कुछ बार यह चयनकर्ता को पहचानता है कि ऐसा लगता है कि एक बग है। यहां तक ​​कि मैंने आपके कोड के लिए सामना नहीं किया, फिर मैंने सिर्फ एक्शन नाम (चयनकर्ता) बदल दिया। यह काम करता हैं

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")
    }
}

लगता है कि मैं एक ही मुद्दे में भाग रहा हूं। मैंने शुरू में स्टोरीबोर्ड में बटन को IBAction बनाया था, लेकिन मुझे "unrecognized selector to भेजा गया है", तो मैं उस तरीके से बनाए गए IBAction को हटा देता हूं और .addTarget का उपयोग करने की कोशिश करता हूं, वे दोनों एक ही त्रुटि की ओर ले जाते हैं।
RayInNoIL

मेरे लिए जो काम किया गया था, वह सभी IBOutlet और IBAction कोड को .swift फ़ाइल और इंटरफ़ेस कनेक्शन के सभी कनेक्शन को हटाने के लिए था। फिर सब कुछ फिर से बनाना।
RayInNoIL

2

यह मेरे लिए बहुत अच्छी तरह से काम करता है, # डायनेमिकबटनटन #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")
}

2

प्रोग्राम बटन को जोड़ने के लिए 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")
}

1
    // 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")
    }

1

चरण 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.
    }


}

0

स्विफ्ट: यूआई बटन प्रोग्रामेटिक रूप से बनाते हैं

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)

0

यहां छवि विवरण दर्ज करें

 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")
         }

0

मैं आमतौर पर सेटअप के लिए यूआईबिटॉन का विस्तार करता हूं। स्विफ्ट 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) 
        }
    }

-1
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)

2
हमेशा अपने कोड में कुछ स्पष्टीकरण जोड़ने की सलाह दी जाती है
बोदज़ोन

-2
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);

}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.