【发布时间】:2015-01-06 09:03:20
【问题描述】:
我正在尝试使用 Swift 更改 UIButton 的图像... 我该怎么办
这是 OBJ-C 代码。但我不知道 Swift:
[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
【问题讨论】:
标签: ios swift xcode cocoa-touch uibutton
我正在尝试使用 Swift 更改 UIButton 的图像... 我该怎么办
这是 OBJ-C 代码。但我不知道 Swift:
[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
【问题讨论】:
标签: ios swift xcode cocoa-touch uibutton
从您的 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)
【讨论】:
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)
}
【讨论】:
斯威夫特 5
yourButton.setImage(UIImage(named: "BUTTON_FILENAME.png"), 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")
}
}
【讨论】:
在 swift 3.0 中:
@IBOutlet weak var selectionButton: UIButton!
selectionButton.setImage(UIImage.addBlueIcon, for: .selected)
【讨论】: