स्विफ्ट में UIButton छवि कैसे बदलें


111

मैं स्विफ्ट का उपयोग करके एक यूआईब्यूटॉन की छवि को बदलने की कोशिश कर रहा हूं ... मुझे क्या करना चाहिए

यह OBJ-C कोड है। लेकिन मैं स्विफ्ट के साथ नहीं जानता:

[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];

जवाबों:


320

अपने Obc-C कोड से मुझे लगता है कि आप बटन के लिए एक छवि सेट करना चाहते हैं इसलिए इस तरह से प्रयास करें:

let playButton  = UIButton(type: .Custom)
if let image = UIImage(named: "play.png") {
    playButton.setImage(image, forState: .Normal)
}

संक्षेप में:

playButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)

स्विफ्ट 3 के लिए:

let playButton  = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)

7
आपको UIButtonType.Custom पर बटन सेट करना चाहिए। कस्टम, सिस्टम को तब तक नहीं जब तक कि छवि शो न हो
sazz

8
स्विफ्ट 3 सिंटेक्स की तलाश करने वालों के लिए: playButton.setImage(UIImage(named: "play.png"), for: .normal)
डस्टिन सेनोस

11

स्विफ्ट 4 में, (Xcode 9) बटन के चित्र को चालू या बंद करने के लिए उदाहरण (btnRec):

var bRec:Bool = true

@IBOutlet weak var btnRec: UIButton!
@IBAction func btnRec(_ sender: Any) {
    bRec = !bRec
    if bRec {
        btnRec.setImage(UIImage(named: "MicOn.png"), for: .normal)
    } else {
        btnRec.setImage(UIImage(named: "MicOff.png"), for: .normal)
    }
}

9

मान लें कि यह आपकी UIButton Nameतरह जुड़ा हुआ है

@IBOutlet var btn_refresh: UIButton!

आप सीधे अपनी छवि को तीन मोड में रख सकते हैं

 // for normal state
btn_refresh.setImage(UIImage(named: "xxx.png"), forState: UIControlState.Normal)
     // for Highlighted state
      btn_refresh.setImage(UIImage(named: "yyy.png"), forState: UIControlState.Highlighted)

        // for Selected state
         btn_refresh.setImage(UIImage(named: "zzzz.png"), forState: UIControlState.Selected)

अपने बटन कार्रवाई पर

  //MARK: button_refresh action
@IBAction func button_refresh_touchup_inside(sender: UIButton)
{
    //if you set the image on same  UIButton
    sender.setImage(UIImage(named: "newimage.png"), forState: UIControlState.Normal)

    //if you set the image on another  UIButton
       youranotherbuttonName.setImage(UIImage(named: "newimage.png"), forState: UIControlState.Normal)
}

यदि आपको बटन के लिए कोई क्रिया करनी हो तो आपको बटन को एक आउटलेट के रूप में सेट करने की आवश्यकता नहीं है। बटन पैरामीटर प्रेषक बटन का एक संदर्भ है जिससे आप बस "यूटूटन = प्रेषक के रूप में! UIButton" को कर सकते हैं और फिर आवश्यकतानुसार बटन में परिवर्तन कर सकते हैं।
मीका मोंटोया

7

Assets.xcassets और Swift 3 का उपयोग करने वाले किसी भी व्यक्ति के लिए, यह इस तरह होगा (.png की कोई आवश्यकता नहीं)।

let buttonDone  = UIButton(type: .Custom)

if let image = UIImage(named: "Done") {
    self.buttonDone.setImage(image, for: .normal)
}

6

तेजी से 3.0 के रूप में। सामान्य अवस्था को हटा दिया गया है। आप सामान्य स्थिति को लागू करने के लिए निम्नलिखित का उपयोग कर सकते हैं।

myButton.setTitle("myTitle", for: [])

5

मैं पहले शीर्ष पर अपने चरों को आरंभ करने की विधि पसंद करता हूं:

let playButton:UIButton!
var image:UIImage!

और फिर उन्हें viewDidLoad में सेट करना

override func viewDidLoad {
  ...
  playButton = UIButton(type: .Custom)
  imagePlay = UIImage(named:"play.png")
  playButton.setImage(imagePlay, forState: .Normal)
}

4

हां, यहां तक ​​कि हम ध्वज का उपयोग करके यूआईब्यूटन की छवि को बदल सकते हैं।

class ViewController: UIViewController
{
    @IBOutlet var btnImage: UIButton!
    var flag = false

    override func viewDidLoad()
    {
        super.viewDidLoad()

        //setting default image for button
        setButtonImage()

    }

    @IBAction func btnClick(_ sender: Any)
    {
        flag = !flag
        setButtonImage()
    }

    func setButtonImage(){
        let imgName = flag ? "share" : "image"
        let image1 = UIImage(named: "\(imgName).png")!
        self.btnImage.setImage(image1, for: .normal)
    }

}

यहां, प्रत्येक क्लिक के बाद आपकी बटन छवि वैकल्पिक रूप से बदल जाएगी।


2

5 स्विफ्ट और बटन के आकार के लिए छवि को सुनिश्चित करता है, लेकिन बटन सीमा के भीतर रहता है।

yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill

// Use setBackgroundImage or setImage
yourButton.setBackgroundImage(UIImage(named: "yourImage"), for: .normal)

1

आप वास्तव में बटन को हाइलाइट कर सकते हैं और दाएं हाथ के टूल बार में इंस्पेक्टर के भीतर आप छवि को अपडेट कर सकते हैं। स्पष्ट रूप से आप इसे कोड में भी कर सकते हैं जैसा कि पहले कहा गया है लेकिन यह आपके लिए एक और विकल्प है


यह वास्तव में काम नहीं करता है। आप छवि को कहां अपडेट करते हैं? यदि आप विभिन्न राज्यों जैसे हाइलाइट, चयनित आदि के बारे में बात कर रहे हैं, तो यह वहां काम नहीं करता है,
KFDoom

1

स्विफ्ट 4.2 और एक्सकोड 10.1 में

चयनित UIButton के लिए छवि जोड़ें

button.addTarget(self, action: #selector(self.onclickDateCheckMark), for: .touchUpInside)//Target 
button.setImage(UIImage.init(named: "uncheck"), for: UIControl.State.normal)//When selected
button.setImage(UIImage.init(named: "check"), for: UIControl.State.highlighted)//When highlighted
button.setImage(UIImage.init(named: "check"), for: UIControl.State.selected)//When selected

लेकिन अगर आप चयनित बटन छवि को बदलना चाहते हैं, तो आपको चयनित राज्य को बदलना होगा। तब आपके बटन में केवल चयनित छवि दिखाई देगी।

@objc func onclickDateCheckMark(sender:UIButton) {
    if sender.isSelected == true {
        sender.isSelected = false
        print("not Selected")
    }else {
        sender.isSelected = true
        print("Selected")

    }
}

1

स्विफ्ट 5

yourButton.setImage(UIImage(named: "BUTTON_FILENAME.png"), for: .normal)

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