#ios #swift #xcode
#iOS #swift #xcode
Вопрос:
Я хочу добавить системные элементы, такие как Add,Edit
etc, в свою кнопку UIViewcontroller
. Я смог найти системный элемент в разделе Attribute Inspector
для BarButton
элементов, но не для кнопки и ActionSheet
. Есть ли способ добиться этой функциональности.
Комментарии:
1. Я думаю, что лучше использовать какой-то пользовательский векторный шрифт ttf и сделать шрифт кнопки своим пользовательским шрифтом и предоставить текст заголовка. Попробуйте fontastic.me
2. @RajanMaheshwari, мне нравятся системные элементы, такие как поиск, обновление и остановка, поэтому мне было интересно, могу ли я использовать их в кнопке или в таблице действий рядом с текстом
3. те же системные элементы представлены в некоторых пользовательских шрифтах. Вы можете сохранить свою кнопку как тип System и использовать их. fontastic.me имеет больше, чем ваши системные шрифты. Проверьте их в
Ответ №1:
Возможно, вам потребуется создать свой собственный метод и перебирать временные подвиды BarButtonItem
.
Эта функция может вам помочь (написана в Swift 3.0).
func imageFromBarButtonItem(type: UIBarButtonSystemItem) -> UIImage {
let barButtonItem = UIBarButtonItem(barButtonSystemItem: type, target: nil, action: nil)
// You have to render it somewhere first
// This is actually not affecting you design
// This is rendering only so the system has it in memory
UIToolbar().setItems([barButtonItem], animated: false)
// Now you can loop and get the image
let itemView = barButtonItem.value(forKey:"view") as! UIView
for view in itemView.subviews {
if view.isKind(of: UIButton.self){
let button = view as! UIButton
return button.imageView!.image!
}
}
return UIImage()
}
Использование:
myView.image = self.imageFromBarButtonItem(type: UIBarButtonSystemItem.add)