我在运行期间尝试更改UIBarButtonItem类型的工具栏按钮时碰到了路障。
我已经以编程方式为给定的文本视图创建了一个工具栏,我希望在按下按钮时更改按钮图像,就像它在图像上有一个切换并关闭一个按钮图像一样。
我会解释:
在这里,我使用所需的按钮创建工具栏
func configureToolbar(forTextView textView: UITextView) {
toolbar?.barStyle = UIBarStyle.default
toolbar?.items = [
UIBarButtonItem.init(image: UIImage.init(named: "bold_unselected"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:))),
UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil),
UIBarButtonItem(title: "Italic", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapItalic(sender:))),
UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil),
UIBarButtonItem(title: "Underline", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.dismissKB))]
toolbar?.sizeToFit()
for (index,item) in (toolbar?.items?.enumerated())! {
item.tag = index
}
// Adds a view as a upper border line
let border = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 0.5))
border.backgroundColor = UIColor.lightGray
toolbar?.addSubview(border)
// Configures the toolbar
toolbar?.backgroundColor = UIColor.white
toolbar?.barTintColor = UIColor.white
toolbar?.tintColor = UIColor.black
toolbar?.clipsToBounds = true
// Adds to the super view;
textView.inputAccessoryView = toolbar
}
这是粗体按钮功能
func didTapBold(sender: UIBarButtonItem) {
typeface.isBold = typeface.isBold! ? false : true // true -> false -> true
toggleButton(button: sender, status: typeface.isBold!)
}
这是我想要更改按钮'状态'开 - 关
的地方func toggleButton(button: UIBarButtonItem, status: Bool) {
// changes the button appearance
switch button.tag {
case 0:
print("bold")
print("status \(status)")
if status {
button.image = UIImage.init(named: "bold_selected")
} else {
button.image = UIImage.init(named: "bold_unselected")
}
case 2:
print("bla bla bla")
case 4:
print("bla bla bla 2")
default:
print("default value called")
}
}
出于某种原因,我无法将图像更改为我想要的图像,但我可以更改为另一个图像。
我已阅读人机界面指南,无法找到工具栏中推荐的图像尺寸,但搜索后我在一些20x20的网站上看过,有人可以确认一下吗?
有默认图像和选定的图像。
更新 不知怎的,我似乎无法在工具栏中添加任何彩色图标/图像。只是尝试添加一个不同的图标,它只是显示为一个黑点。
答案 0 :(得分:0)
所以我找到了解决方案,这很简单,但不容易找到。
如果您想在工具栏中添加彩色图标/图片,当您添加图片时,请不要忘记将渲染模式属性设置为始终原创。
现在,修正后的代码应为:
//when setting the toolbar icons
toolbar?.items = [UIBarButtonItem.init(image: UIImage.init(named: "bold_unselected")?.withRenderingMode(.alwaysOriginal), style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:)))]
将图像实例化为
let img = UIImage(named: "image").withRenderingMode(.alwaysOriginal)
let barBtnItm = UIBarButtonItem.init(image: img, style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:)))
希望有所帮助