C # MVC экспорт данных в Excel

На основании ответа @yycking я написал подходящее расширение Swift 3/4:

//
//  UIImage+imageFromSystemBarButton.swift
//

import UIKit

extension UIImage{

    class func imageFromSystemBarButton(_ systemItem: UIBarButtonSystemItem, renderingMode:UIImageRenderingMode = .automatic)-> UIImage {

        let tempItem = UIBarButtonItem(barButtonSystemItem: systemItem, target: nil, action: nil)

        // add to toolbar and render it
        let bar = UIToolbar()
        bar.setItems([tempItem], animated: false)
        bar.snapshotView(afterScreenUpdates: true)

        // got image from real uibutton
        let itemView = tempItem.value(forKey: "view") as! UIView

        for view in itemView.subviews {
            if view is UIButton {
                let button = view as! UIButton
                let image = button.imageView!.image!
                image.withRenderingMode(renderingMode)
                return image
            }
        }

        return UIImage()
    }
}

Пример с кнопкой действия (по умолчанию):

let actionImage = UIImage.imageFromSystemBarButton(.action)   
let myButton = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
myButton.setImage(actionImage, for: .normal)

view.addSubview(myButton)

Если вы хотите, чтобы ваше изображение всегда обрабатывалось как шаблон независимо от контекста, установите renderMode в .alwaysTemplate

 let actionImage = UIImage.imageFromSystemBarButton(.action, renderingMode: .alwaysTemplate) 
0
задан SilverFish 16 January 2019 в 22:48
поделиться