在 swift 中从屏幕的一部分截取屏幕截图



我需要截取屏幕的一部分。

这是截取全屏屏幕截图的代码:

    UIGraphicsBeginImageContext(view.frame.size)
    view.layer.renderInContext(UIGraphicsGetCurrentContext())
    let imageRef = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

但是如何从屏幕的一部分截取屏幕截图呢?

谢谢

1:你需要定义一个上下文。例如:

UIGraphicsBeginImageContextWithOptions(self.messageTextView.bounds, true, 2.0 )

2:在上下文中绘制图像

self.messageTextView.drawViewHierarchyInRect(CGRect(x: 0, y: 0, width: self.messageTextView.bounds.width, height: self.messageTextView.bounds.height), afterScreenUpdates: false)

3:使用新绘制的图像

var newImage = UIGraphicsGetImageFromCurrentImageContext()
self.someImageView.image = newImage

您可以修改代码以截取所需视图的屏幕截图。

您可以使用.snapshotViewAfterScreenUpdates(BOOL)执行此操作。喜欢这个:

exampleImageView.snapshotViewAfterScreenUpdates(false)
这是截

取屏幕部分的最佳方法。 尝试使用Twitter和Facebook屏幕截图共享功能。

 func shareButtonClickedToTwitter() {
     UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,150), false, 0)
     var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
     self.view?.drawViewHierarchyInRect(CGRectMake(-50, -50, self.frame.size.width, self.frame.size.height), afterScreenUpdates: true)
     var screenShot  = UIGraphicsGetImageFromCurrentImageContext()
     UIGraphicsEndImageContext()
     self.vc.showTWShare("I scored (score) in Beanystalk can you do better? Available in App Store..", shareImage: screenShot)  
}

最新更新