ios - 如何动态更改自定义 UIButton 的图像
问题描述
我创建了一个自定义 UIButton 类,使其看起来像下拉选择。我在按钮右侧有一个小的向下箭头图像。我想根据各种条件将按钮的图像更改为不同的图像,例如灰色、白色或红色。怎么做?以下是我的代码:
class DropDownButton: UIButton {
let dropDownImageGrey = UIImage(named: "Icons/DropDown/Grey")
let dropDownImageWhite = UIImage(named: "Icons/DropDown/White")
let dropDownImageRed = UIImage(named: "Icons/DropDown/Red")
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: self.frame.width - 108, bottom: 0, right:0)
self.setImage(dropDownImageGrey, for: [])
self.titleEdgeInsets = UIEdgeInsets(top: 0, left: -13, bottom: 0, right:0)
}
}
override func viewDidLoad() {
// Change image to red one
dropDownButton.??? // How to change?
}
解决方案
您可能想使用 setImage
,UIButton
override func viewDidLoad() {
// Change image to red one
let dropDownButton = DropDownButton()
dropDownButton.setImage(dropDownButton.dropDownImageRed, for: .normal)
}
如果添加了图像,Assets.xcassets
那么您可以使用image literals
或直接使用名称,例如,
let dropDownImageGrey = UIImage(named: "Grey")
let dropDownImageWhite = UIImage(named: "White")
let dropDownImageRed = UIImage(named: "Red")
推荐阅读
- r - prop.test 未显示置信区间
- dependencies - Rebar3 无法下载对 Windows 10 的依赖
- node.js - Nodemailer 和 ical-generator - 发送日历邀请
- c++ - 为什么在使用字符串时我的 for 循环不执行
- javascript - 我想使用 CSS 样式设置 JS 文件的样式,但出现错误
- java - 使用本地变量的单例安全发布
- c# - 为 UAT 项目 Web 窗体创建 Web 安装程序。、ASP.net、C#
- django - 启动 Django 项目
- python - 在 pandas 中组织单列以制作多列和数据框
- regex - 使用正则表达式解析文本文件