Как добавить системные элементы в таблицу кнопок и действий

#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)