Как получить слой с контентом из SVGKit SVGKImage? - PullRequest
0 голосов
/ 04 июня 2019

Я изо всех сил пытаюсь получить работающий слой с содержимым изображения (представления) SVGKit в моем проекте Swift.

Когда я создаю SVGKFastImageView с SVGKImage из пути к файлу, я могу вывести его на экран, и svg отображается правильно. Теперь мне нужен слой этого SVGKFastImageView или SVGKImage, чтобы я мог использовать его в своем редакторе, но слой всегда пуст, даже если я добавлю image.uiImage.cgImage к layer.contents.

У вас есть идея, как я могу решить это?

Это мой код:

let picker = FilePicker(mode: .document, viewController: vc)
    picker.pick(fileExists: false, source: .view(vc.view, vc.view.bounds)) { _, result in
        if case .document(let url) = result {
            do {
                var isDir: ObjCBool = false
                if !FileManager.default.fileExists(atPath: url.path, isDirectory: &isDir) {
                    throw AppError.other("file does not exist")
                }
                if isDir.boolValue {
                    return
                }
                if url.lastPathComponent.hasSuffix("svg"), let image = SVGKImage(contentsOf: url), let imgView = SVGKFastImageView(svgkImage: image) {

                    UIView.animate(withDuration: 1.0, animations: {
                        vc.view.addSubview(imgView)
                        imgView.addConstraintsToMatchSuperview()
                    }, completion: { (done) in
                        let layer = CALayer()
                        layer.contents = imgView.image.uiImage.cgImage
                        vc.addLayer(layer: layer)
                        imgView.removeFromSuperview()
                    })

                }
            } catch {
                // stuff
            }
        }
    }
...