我如何同时传递 x 和 y 轴以及屏幕的高度和宽度以快速以编程方式截取屏幕截图

Posted

技术标签:

【中文标题】我如何同时传递 x 和 y 轴以及屏幕的高度和宽度以快速以编程方式截取屏幕截图【英文标题】:How can i pass both x and y axis along with height and width of Screen to take screenshot programmatically in swift 【发布时间】:2019-10-03 01:41:19 【问题描述】:

我在 ImageView 上添加了 UIImageView,所以我想截取这两个 imageview 的屏幕截图,以便它们看起来像一个,任何其他建议也很感激。

我做了一个按钮来帮助我截屏,我添加了 x 轴和 y 轴,

func takeScreenshot(_ shouldSave: Bool = true) -> UIImage 
    var screenshotImage :UIImage?
    let layer = UIApplication.shared.keyWindow!.layer
    let scale = UIScreen.main.scale
    UIGraphicsBeginImageContextWithOptions(CGSize(width: 20, height: 104), false, scale);
    guard let context = UIGraphicsGetCurrentContext() else return screenshotImage ?? UIImage(imageLiteralResourceName: "loading")
    layer.render(in:context)
    screenshotImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    if let image = screenshotImage, shouldSave 
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
    
    return screenshotImage ?? UIImage(named: "loading")!

我希望截取的屏幕截图会截取 imageview 的屏幕截图。截图附上,enter image description here

【问题讨论】:

尝试在以后的问题中使用代码块,因为它更容易阅读。 【参考方案1】:

将这两个图像视图放在一个 UIView 中,正确地约束它们。然后对该 UIView 进行截图。按照这个截图: How to take screenshot of a UIView in swift?

【讨论】:

【参考方案2】:

我相信你想说

您有 2 个具有不同图像的 UIImageView,然后您想截取这 2 个 UIImageView 的屏幕截图以制作 1 个图像。

如果是这种情况,最简单的解决方法是将这 2 个 UIImageView 包装在一个 UIView 中。然后将该 UIView 转换为 UIImage。因此,您可以将这 2 个 UIImageView 的屏幕截图合二为一。

如果您需要代码将 UIView 转换为 UIImage:

extension UIView 
    func toImage() -> UIImage 
        let renderer = UIGraphicsImageRenderer(bounds: bounds)
        return renderer.image  rendererContext in
            layer.render(in: rendererContext.cgContext)
        
    

我不确定这是否能解决您的问题。

【讨论】:

以上是关于我如何同时传递 x 和 y 轴以及屏幕的高度和宽度以快速以编程方式截取屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

如何根据屏幕尺寸计算 x,y 坐标

使用OpenGL在C ++中同时围绕其(x,y&z)轴旋转对象

如何设置 highcharts X轴和Y轴值

如何找到直线和矩形的交点?

如何指定 X、Y、宽度和高度以便在 Photoshop 中进行裁剪?

如何使用 mask-RCNN 在 python 中计算(x,y)(质心)和掩码的宽度和高度?