获取UIScrollView的可见内容时会有额外的空白区域

时间:2016-05-15 21:11:32

标签: swift uiscrollview uigraphicscontext

UIImageView内有一个UIScrollView,用户可以向下扩展然后保存它:

enter image description here

导航栏下方的区域和标签栏的顶部是UIScrollView框架。

当用户点击完成时,图像将保存在相机胶卷中。这就是那里保存的(照片应用程序): enter image description here

我不知道保存图片中的这个空白区域是什么。

这是保存图片的代码:

UIGraphicsBeginImageContextWithOptions(scrollView.frame.size, false, 0.0)
            let rect = CGRectMake(0, scrollView.frame.origin.y, scrollView.frame.size.width, scrollView.frame.size.height)
            self.view.drawViewHierarchyInRect(rect, afterScreenUpdates: true)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            let imageData = UIImageJPEGRepresentation(image, 1)
            let compressedJPGImage = UIImage(data: imageData!)
            UIImageWriteToSavedPhotosAlbum(compressedJPGImage!, nil, nil, nil)

我要保存的内容正是UIScrollView的可见区域。

1 个答案:

答案 0 :(得分:0)

我必须使用CGContextTranslateCTM()翻译矩形:

    let screenRect: CGRect = scrollView.bounds
    UIGraphicsBeginImageContext(screenRect.size)
    let ctx: CGContextRef = UIGraphicsGetCurrentContext()!
    CGContextTranslateCTM(ctx,0,-scrollView.frame.origin.y)
    UIColor.blackColor().set()
    CGContextFillRect(ctx, screenRect)
        view.layer.renderInContext(ctx)
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()