所以我正在构建一个meme应用程序,通过更改两个标签的文本,您可以创建自己的模因。
常规布局
该应用程序包含整个场景中的一个ImageView,其中包含contentMode aspectFit
。因此,一些图片在挑选时会重新调整大小。
截取屏幕上方和下方的空白
当我通过以下代码截取图像截图时,我得到了正确的结果。但是,生成的图像上方和下方都有空格。
private func generateMemedImage() -> UIImage {
//self.navigationController?.setNavigationBarHidden(true, animated: false)
// toolBar.isHidden = true
// Render view to an image
// Parameter 0.0 is required, so the generated image is not blurry.
UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0.0)
view.drawHierarchy(in: view.frame, afterScreenUpdates: true)
var memedImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
//self.navigationController?.setNavigationBarHidden(false, animated: false)
//toolBar.isHidden = false
return memedImage
}
以上代码的结果
因此,为了自动定位标签,我引入了一个矩形containingImageHelperView
(下面以红色显示),它基本上是一个添加在所有其他视图之上的视图。 (实际上视图是透明的)
private func generateMemedImage() -> UIImage {
//self.navigationController?.setNavigationBarHidden(true, animated: false)
// toolBar.isHidden = true
// Render view to an image
// Parameter 0.0 is required, so the generated image is not blurry.
UIGraphicsBeginImageContextWithOptions(containingImageHelperView!.frame.size, false, 0.0)
view.drawHierarchy(in: containingImageHelperView!.frame, afterScreenUpdates: true)
var memedImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
//self.navigationController?.setNavigationBarHidden(false, animated: false)
//toolBar.isHidden = false
return memedImage
}
然而,我得到了奇怪的结果。在模拟器上我只得到一张空白(白色)图片,在真实设备上我得到类似的东西(红色圆圈仅用于隐私目的):
请注意,生成的屏幕截图具有正确的大小。但他们没有按预期显示内容。
我希望我足够清楚。请帮忙!
如果有助于更清楚地了解整个项目,可以在此处查看:https://github.com/Shanakor/MemeMe