Почему второе изображение не отображается, когда я пытаюсь нарисовать его? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь создать изображение с графическим контекстом, чтобы затем поделиться им в Instagram.Ниже приведен код q: Как нарисовать изображение в Swift? .Проблема в том, что по какой-то причине второе изображение, которое я добавляю, не отображается.Это не тот ярлык, который я пытаюсь использовать.

Как я могу заставить это работать правильно

            let image = self.getImage(url: (Auth.auth().currentUser?.photoURL)!)
            let imageView = UIImageView(frame: self.view.frame)
            imageView.contentMode = .scaleAspectFit
            imageView.image = UIImage(named: "backgroundImageToShare")
            imageView.drawOnCurrentImage(anotherImage: image, mode: .addSubview) { parentSize, newImageSize in
                //(parentSize.width/2)-(newImageSize.width/2)
                //(parentSize.height/2)-(newImageSize.height/2)
                return CGRect(x: 50, y: 50, width: 118, height: 118)
            }

            let library = ALAssetsLibrary()
            let finalImage = imageView.image//self.getImage(url: (Auth.auth().currentUser?.photoURL)!)
            library.writeImage(toSavedPhotosAlbum: finalImage?.cgImage, metadata: nil) { (url, error) in
Extensions:
extension UIImage {

    typealias RectCalculationClosure = (_ parentSize: CGSize, _ newImageSize: CGSize)->(CGRect)

    func with(image named: String, rectCalculation: RectCalculationClosure) -> UIImage {
        return with(image: UIImage(named: named), rectCalculation: rectCalculation)
    }

    func with(image: UIImage?, rectCalculation: RectCalculationClosure) -> UIImage {

        if let image = image {
            UIGraphicsBeginImageContext(size)

            draw(in: CGRect(origin: .zero, size: size))
            image.draw(in: rectCalculation(size, image.size))

            let newImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return newImage!
        }
        return self
    }
}
extension UIImageView {

    enum ImageAddingMode {
        case changeOriginalImage
        case addSubview
    }

    func drawOnCurrentImage(anotherImage: UIImage?, mode: ImageAddingMode, rectCalculation: UIImage.RectCalculationClosure) {
        guard let image = image else {
            return
        }

        switch mode {
        case .changeOriginalImage:
            self.image = image.with(image: anotherImage, rectCalculation: rectCalculation)

        case .addSubview:
            let newImageView = UIImageView(frame: rectCalculation(frame.size, image.size))
            newImageView.image = anotherImage
            newImageView.layer.masksToBounds = true
            newImageView.layer.cornerRadius = newImageView.frame.height/2
            newImageView.layer.borderWidth = 2
            newImageView.layer.borderColor = UIColor.white.cgColor

            newImageView.layer.shadowColor = UIColor.white.cgColor
            newImageView.layer.shadowRadius = 6
            newImageView.layer.shadowOpacity = 0.2
            newImageView.layer.shadowOffset = CGSize(width: 0, height: 0)
            self.superview?.addSubview(newImageView)
            let label = UILabel(frame: CGRect(x: 50
                , y: 50
                , width: 100
                , height: 30))
            label.text = " Tests stsg"
            label.textColor = .black
            self.superview?.addSubview(label)
        }
    }
}

1 Ответ

0 голосов
/ 20 сентября 2019

Я пытаюсь сделать изображение с графическим контекстом

Нет, вы не.Говоря mode: .addSubview, это именно то, что вы говорите , а не делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...