如何截取单个视图对象而不是整个屏幕的屏幕截图?
How do I take a screenshot of a single view object instead of the entire screen?
所以我有一个 UIImageView,其中一些文本覆盖在顶部和底部。我想获取屏幕截图,这样我就有了一个新图像,上面覆盖了文字。这是我正在使用的代码,但我无法正确截取 UIImageView 对象的屏幕截图。
func generateImage() -> UIImage
{
// Render view to an image
UIGraphicsBeginImageContext(self.view.frame.size)
view.drawViewHierarchyInRect(self.imageView.frame,
afterScreenUpdates: true)
let memeImage: UIImage =
UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return memeImage
}
或者,我也尝试了下面的代码,虽然保存的图像是屏幕的右侧 size/area,但它最终得到了我截图的模糊版本:
UIGraphicsBeginImageContext(self.imageView.frame.size)
let context = UIGraphicsGetCurrentContext()
imageView.layer.renderInContext(context!) // tried drawInContext but it didn't work at all
let memeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return memeImage
首先,使用 UIGraphicsBeginImageContextWithOptions 将允许您调整比例因子以适合您的屏幕尺寸。其次,传入要捕获的视图将确保您使用的是正确的 view/subviews.
func generateImage(currentView: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(currentView.frame.size, true, 0.0)
currentView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let memeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//UIImageWriteToSavedPhotosAlbum(memeImage, nil, nil, nil)
return memeImage
}
所以我有一个 UIImageView,其中一些文本覆盖在顶部和底部。我想获取屏幕截图,这样我就有了一个新图像,上面覆盖了文字。这是我正在使用的代码,但我无法正确截取 UIImageView 对象的屏幕截图。
func generateImage() -> UIImage
{
// Render view to an image
UIGraphicsBeginImageContext(self.view.frame.size)
view.drawViewHierarchyInRect(self.imageView.frame,
afterScreenUpdates: true)
let memeImage: UIImage =
UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return memeImage
}
或者,我也尝试了下面的代码,虽然保存的图像是屏幕的右侧 size/area,但它最终得到了我截图的模糊版本:
UIGraphicsBeginImageContext(self.imageView.frame.size)
let context = UIGraphicsGetCurrentContext()
imageView.layer.renderInContext(context!) // tried drawInContext but it didn't work at all
let memeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return memeImage
首先,使用 UIGraphicsBeginImageContextWithOptions 将允许您调整比例因子以适合您的屏幕尺寸。其次,传入要捕获的视图将确保您使用的是正确的 view/subviews.
func generateImage(currentView: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(currentView.frame.size, true, 0.0)
currentView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let memeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//UIImageWriteToSavedPhotosAlbum(memeImage, nil, nil, nil)
return memeImage
}