Câu trả lời:
Từ mã Obc-C của bạn, tôi nghĩ bạn muốn đặt nút Hình ảnh cho nên hãy thử theo cách này:
let playButton = UIButton(type: .Custom)
if let image = UIImage(named: "play.png") {
playButton.setImage(image, forState: .Normal)
}
Nói ngắn gọn:
playButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)
Đối với Swift 3:
let playButton = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
trong Swift 4, (Xcode 9) ví dụ để chuyển hình ảnh của nút thành Bật hoặc Tắt (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)
}
}
giả sử rằng đây là kết nối của bạn UIButton Name
như
@IBOutlet var btn_refresh: UIButton!
bạn có thể đặt trực tiếp hình ảnh của mình ở ba chế độ
// 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)
về hành động nút của bạn
//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)
}
Kể từ phiên bản nhanh 3.0, trạng thái bình thường đã bị loại bỏ. Bạn có thể sử dụng phần sau để áp dụng trạng thái bình thường.
myButton.setTitle("myTitle", for: [])
Tôi thích phương pháp khởi tạo các biến của mình ở trên cùng trước:
let playButton:UIButton!
var image:UIImage!
và sau đó đặt chúng trong viewDidLoad
override func viewDidLoad {
...
playButton = UIButton(type: .Custom)
imagePlay = UIImage(named:"play.png")
playButton.setImage(imagePlay, forState: .Normal)
}
Có, thậm chí chúng ta có thể thay đổi hình ảnh của UIButton bằng cách sử dụng cờ.
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)
}
}
Tại đây, sau mỗi lần nhấp, hình ảnh nút của bạn sẽ thay đổi theo cách khác.
Swift 5 và đảm bảo tỷ lệ hình ảnh theo kích thước của nút nhưng vẫn nằm trong giới hạn của nút.
yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill
// Use setBackgroundImage or setImage
yourButton.setBackgroundImage(UIImage(named: "yourImage"), for: .normal)
bạn thực sự có thể thực hiện việc này bằng cách tô sáng nút và trong thanh công cụ bên phải, bạn có thể cập nhật hình ảnh. rõ ràng bạn có thể làm điều đó trong mã cũng như đã nêu trước đây nhưng đây là một tùy chọn khác cho bạn
Trong Swift 4.2 và Xcode 10.1
Thêm hình ảnh cho UIButton đã chọn
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
Nhưng nếu bạn muốn thay đổi hình ảnh nút đã chọn, bạn cần thay đổi trạng thái đã chọn của nó. Sau đó, chỉ hình ảnh được chọn sẽ xuất hiện trong nút của bạn.
@objc func onclickDateCheckMark(sender:UIButton) {
if sender.isSelected == true {
sender.isSelected = false
print("not Selected")
}else {
sender.isSelected = true
print("Selected")
}
}
trong 3.0 nhanh chóng :
@IBOutlet weak var selectionButton: UIButton!
selectionButton.setImage(UIImage.addBlueIcon, for: .selected)