Я ударил по дороге, пытаясь изменить кнопку панели инструментов типа 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, может кто-то подтвердить это?
Есть изображение по умолчанию и выбранное.
UPDATE Почему-то кажется, что я не могу добавить любой цветной значок/изображения на панели инструментов. Просто попытался добавить другой значок, и он просто появился как черная точка.
Btw, мои изображениям/иконкам 64x64 Я не знаю, если это вызывает проблему, я действительно так не думаю –
Кто-нибудь поможет? :) –