ฉันกำลังพยายามเปลี่ยนรูปภาพของ UIButton โดยใช้ Swift ... ฉันควรทำอย่างไร
นี่คือรหัส OBJ-C แต่ฉันไม่รู้ด้วย Swift:
[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
ฉันกำลังพยายามเปลี่ยนรูปภาพของ UIButton โดยใช้ Swift ... ฉันควรทำอย่างไร
นี่คือรหัส OBJ-C แต่ฉันไม่รู้ด้วย Swift:
[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
คำตอบ:
จากรหัส Obc-C ของคุณฉันคิดว่าคุณต้องการตั้งค่าปุ่ม Image for ดังนั้นลองทำตามวิธีนี้:
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)
สำหรับ Swift 3:
let playButton = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
ใน Swift 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)
}
}
สมมติว่านี่คือการเชื่อมต่อของคุณ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)
}
สำหรับใครที่ใช้ Assets.xcassets และ Swift 3 จะเป็นแบบนี้ (ไม่ต้องใช้. png)
let buttonDone = UIButton(type: .Custom)
if let image = UIImage(named: "Done") {
self.buttonDone.setImage(image, for: .normal)
}
ในขณะที่ swift 3.0 สถานะปกติถูกลบออกคุณสามารถใช้การติดตามเพื่อใช้สถานะปกติ
myButton.setTitle("myTitle", for: [])
ฉันชอบวิธีการเริ่มต้นตัวแปรของฉันที่ด้านบนก่อน:
let playButton:UIButton!
var image:UIImage!
แล้วตั้งค่าใน viewDidLoad
override func viewDidLoad {
...
playButton = UIButton(type: .Custom)
imagePlay = UIImage(named:"play.png")
playButton.setImage(imagePlay, forState: .Normal)
}
ใช่แม้เราสามารถเปลี่ยนอิมเมจของ UIButton ได้โดยใช้แฟล็ก
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)
}
}
ที่นี่ทุกครั้งที่คลิกรูปภาพปุ่มของคุณจะเปลี่ยนไป
Swift 5 และทำให้แน่ใจว่าภาพจะปรับขนาดตามขนาดของปุ่ม แต่ยังคงอยู่ในขอบเขตของปุ่ม
yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill
// Use setBackgroundImage or setImage
yourButton.setBackgroundImage(UIImage(named: "yourImage"), for: .normal)
คุณสามารถทำได้จริงโดยการไฮไลต์ปุ่มและภายในตัวเลือกบนแถบเครื่องมือด้านขวามือคุณสามารถอัปเดตรูปภาพได้ เห็นได้ชัดว่าคุณสามารถทำได้ในรหัสตามที่ระบุไว้ก่อนหน้านี้ แต่นี่เป็นอีกทางเลือกหนึ่งสำหรับคุณ
ใน Swift 4.2 และ Xcode 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")
}
}
สวิฟต์ 5
yourButton.setImage(UIImage(named: "BUTTON_FILENAME.png"), for: .normal)
ใน swift 3.0 :
@IBOutlet weak var selectionButton: UIButton!
selectionButton.setImage(UIImage.addBlueIcon, for: .selected)