Я пытаюсь создать изображение с графическим контекстом, чтобы затем поделиться им в 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)
}
}
}