我有一个条形按钮项目设置为我的图像资源文件夹中的自定义图像。启动后,一旦用户按下按钮,我希望它更改为系统项 - 停止(X
)按钮。我知道如何以编程方式更改条形按钮的图像,但如何将图像更改为代码中的某个系统项?
Swift 3,Xcode 8 beta 1.
如何从我的代码中将我的按钮图像更改为其中一个系统项?
答案 0 :(得分:2)
下载this项目以从iOS中提取艺术作品,并在打开菜单时更改按钮的图像。
当您运行项目并完成加载资源搜索关闭后,您可以看到所有X图像。
如果您在编译项目时遇到问题,请从有问题的属性和ivars中删除__weak
。
答案 1 :(得分:1)
对于使用 iOS 13 及更高版本的用户,您可以使用 UIImage(systemName:) 属性。您可以使用 Apple's SF Symbols app 搜索 systemItem 名称和相应的图像。以下是使用停止 X 按钮的示例:
barButtonItem.image = UIImage(systemName: "xmark")
答案 2 :(得分:0)
您需要做的是拥有两个按钮(您可以通过编程方式或在界面构建器中设置它们),一个具有图像,另一个具有停止行为。按下一个时,切换两者的可见性。
我认为最好的选择是以编程方式进行,所以这就是:
添加两个条形按钮项作为类成员:
private var itemOn: UIBarButtonItem!
private var itemOff: UIBarButtonItem!
然后在viewDidLoad
中设置您想要的值(一个拥有一个图像,另一个拥有" X&#34的正常行为;)。然后将itemOn
按钮添加到导航栏:
self.navigationItem.rightBarButtonItem = itemOn
请注意两者都应该采取相同的行动:
self.itemOn.target = self
self.itemOn.action = Selector("toggleVisibleButton:")
self.itemOff.target = self
self.itemOff.action = Selector("toggleVisibleButton:")
然后实现toggleVisibleButton函数:
func toggleVisibleButton(sender: UIBarButtonItem) {
if self.navigationItem.rightBarButtonItem == itemOn {
self.navigationItem.rightBarButtonItem = itemOff
// Do something with the button that has the image
} else {
self.navigationItem.rightBarButtonItem = itemOn
// Do something with the button that has the X
}
}
更新Swift 3 :
设置这样的动作:
self.itemOn.action = #selector(self.toggleVisibleButton(sender:))
答案 3 :(得分:0)
navigationItem.rightBarButtonItem = UIBarButtonItem(
barButtonSystemItem: UIBarButtonItem.SystemItem.add,
target: self,
action: #selector(yourMethod)
)
根据https://developer.apple.com/documentation/uikit/uibarbuttonitem/systemitem
更改“添加”