Swift를 사용하여 UIButton의 이미지를 변경하려고합니다. 어떻게해야합니까?
이것은 OBJ-C 코드이지만 Swift에 대해서는 잘 모릅니다.
[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
답변
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)
Swift 3 :
let playButton = UIButton(type: .custom)
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부터 .normal state가 제거되었습니다. 다음을 사용하여 normal state를 적용 할 수 있습니다.
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)
}
}
여기에서 클릭 할 때마다 버튼 이미지가 번갈아 변경됩니다.