点击时如何更改按钮的图像 - Swift
How do I change the image of a button when tapped - Swift
我试图在点击时更改按钮的图像(这是我希望播放更改为暂停的音频播放器)。到目前为止,我只设法在按住按钮时更改它,然后在松开按钮时更改回来。
我试过使用 Selected 而不是 Highlighted 但这不起作用。 (初始图像在属性检查器中设置)。这就是我的 -
@IBAction func buttonTapped(sender: AnyObject) {
ColourTestButton.setImage(UIImage(named: "blank-purple.jpg"), forState:.Highlighted)
}
我意识到突出显示的意思只是在我希望它变回的另一张图片上(在 Table 视图的单元格中)它保留了下来,这就是为什么我认为它适用于这个。我必须在这里做什么才能使其保持更改为新图像?
我认为您需要此代码:
@IBAction func buttonTapped(sender: AnyObject) {
let image = UIImage(named: "blank-purple.jpg") as UIImage!
let playButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
ColourTestButton.setImage(image, forState: .Normal)
}
更新:
如果你想像play/pause那样改变图像,那么你可以这样做:
var pressed = false
@IBAction func pressed(sender: AnyObject) {
if !pressed {
let image = UIImage(named: "pauseImage.png") as UIImage!
let playButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
btn.setImage(image, forState: .Normal)
pressed = true
} else {
let image = UIImage(named: "playImage.png") as UIImage!
let playButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
btn.setImage(image, forState: .Normal)
pressed = false
}
}
虽然 Dharmesh Kheni 的回答不错,但我还是建议使用两个按钮。您可以在单独的函数或界面生成器中设置它们,然后根据状态显示和隐藏它们。像这样:
func setButtons()
{
playBtn.setImage(UIImage(named: "play.png"), forState:.Normal)
pauseBtn.setImage(UIImage(named: "play.png"), forState:.Normal)
pauseBtn.hidden = true
}
@IBAction func playTapped(sender: AnyObject)
{
playBtn.hidden = true
pauseBtn.hidden = flase
//do other stuff
}
@IBAction func pauseTapped(sender: AnyObject)
{
playBtn.hidden = false
pauseBtn.hidden = true
//do other stuff
}
我认为您只是在高亮状态下更新图像,所以当您释放按钮时它会返回到原始图像。尝试在正常状态下更改它,以便它会更改图像。拿一个标志来检查播放和暂停条件。
@IBAction func buttonTapped(sender: AnyObject) {
if (!flag)
{
//for Play
flag = true
ColourTestButton.setImage(UIImage(named:"USE PLAY IMAGE"), forState:. Normal)
}
else
{
//for Pause
flag = false
ColourTestButton.setImage(UIImage(named:"USE PAUSE IMAGE"), forState:. Normal)
}
}
我试图在点击时更改按钮的图像(这是我希望播放更改为暂停的音频播放器)。到目前为止,我只设法在按住按钮时更改它,然后在松开按钮时更改回来。
我试过使用 Selected 而不是 Highlighted 但这不起作用。 (初始图像在属性检查器中设置)。这就是我的 -
@IBAction func buttonTapped(sender: AnyObject) {
ColourTestButton.setImage(UIImage(named: "blank-purple.jpg"), forState:.Highlighted)
}
我意识到突出显示的意思只是在我希望它变回的另一张图片上(在 Table 视图的单元格中)它保留了下来,这就是为什么我认为它适用于这个。我必须在这里做什么才能使其保持更改为新图像?
我认为您需要此代码:
@IBAction func buttonTapped(sender: AnyObject) {
let image = UIImage(named: "blank-purple.jpg") as UIImage!
let playButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
ColourTestButton.setImage(image, forState: .Normal)
}
更新:
如果你想像play/pause那样改变图像,那么你可以这样做:
var pressed = false
@IBAction func pressed(sender: AnyObject) {
if !pressed {
let image = UIImage(named: "pauseImage.png") as UIImage!
let playButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
btn.setImage(image, forState: .Normal)
pressed = true
} else {
let image = UIImage(named: "playImage.png") as UIImage!
let playButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
btn.setImage(image, forState: .Normal)
pressed = false
}
}
虽然 Dharmesh Kheni 的回答不错,但我还是建议使用两个按钮。您可以在单独的函数或界面生成器中设置它们,然后根据状态显示和隐藏它们。像这样:
func setButtons()
{
playBtn.setImage(UIImage(named: "play.png"), forState:.Normal)
pauseBtn.setImage(UIImage(named: "play.png"), forState:.Normal)
pauseBtn.hidden = true
}
@IBAction func playTapped(sender: AnyObject)
{
playBtn.hidden = true
pauseBtn.hidden = flase
//do other stuff
}
@IBAction func pauseTapped(sender: AnyObject)
{
playBtn.hidden = false
pauseBtn.hidden = true
//do other stuff
}
我认为您只是在高亮状态下更新图像,所以当您释放按钮时它会返回到原始图像。尝试在正常状态下更改它,以便它会更改图像。拿一个标志来检查播放和暂停条件。
@IBAction func buttonTapped(sender: AnyObject) {
if (!flag)
{
//for Play
flag = true
ColourTestButton.setImage(UIImage(named:"USE PLAY IMAGE"), forState:. Normal)
}
else
{
//for Pause
flag = false
ColourTestButton.setImage(UIImage(named:"USE PAUSE IMAGE"), forState:. Normal)
}
}