Как объединить 2 файла PDF-изображений в Swift - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть два векторных изображения. Я хочу объединить их так, чтобы точки появлялись сверху первого изображения. Решения для обычных ресурсов png не работают, так как они используют фактический размер изображения, а объединенное изображение получается очень размытым.

Одно решение, которое я нашел, - это установка второго UIImageView (такого же размера, по центру) поверх первого, но это выглядит действительно глупо.

Мне нужно сделать это внутри приложения, потому что я также хочу, чтобы квадрат был по-разному окрашен (измените оттенок вектора), а затем сливается с черной рамкой изображения. Таким образом, у меня может быть 3 актива в моем проекте (квадрат, граница и точки).

enter image description here enter image description here

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Я предлагаю использовать подслои:

["firstOne", "secondOne"].forEach {
let myLayer = CALayer()
let myImage = UIImage(named: $0)?.cgImage
myLayer.frame = myView.bounds
myLayer.contents = myImage
myView.layer.addSublayer(myLayer)
}

Или создать пользовательский класс слоев

0 голосов
/ 18 февраля 2020

Придумал способ сделать это в расширении UIImageView. Удивлен, что я нигде не смог найти это.

extension UIImageView {

    func mergeTwoPDF(one: UIImage, two: UIImage) {
        UIGraphicsBeginImageContextWithOptions(self.frame.size, false, UIScreen.main.scale)
        let areaSize = CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height)
        one.draw(in: areaSize, blendMode: .normal, alpha: 1.0)
        two.draw(in: areaSize, blendMode: .normal, alpha: 1.0)
        //If you want to merge more than 2 images, just add them to the func parameters and repeat the line above with them
        let mergedImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        self.image = mergedImage
    }
}
...