为什么当我尝试在图像上绘制时没有显示第二个图像?



我正在尝试制作带有图形上下文的图像,然后在Instagram上分享。我有来自这个问题的代码:如何在 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)
}
}
}

我正在尝试制作具有图形上下文的图像

不,你不是。通过说mode: .addSubview这正是你说做的。

最新更新