Screenshot Only Part of Screen - Swift

前端 未结 4 1087
时光说笑
时光说笑 2021-02-07 03:43

I\'m using this Swift code to take a screenshot of my app:

UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0);
self.view.drawVi         


        
相关标签:
4条回答
  • 2021-02-07 03:49

    I think this is the best Answer to take a shot of part of the screen:

    func screenShot() {
        UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.frame.size.width*0.99,self.frame.size.height*0.70), false, 0)
        var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
        self.view?.drawViewHierarchyInRect(CGRectMake(-01, -01, self.frame.size.width, self.frame.size.height), afterScreenUpdates: true)
        var screenShot  = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
    }
    
    0 讨论(0)
  • 2021-02-07 03:58

    To snapshot a view containing a UIVisualEffect (Blur/Vibrancy), see my solution here: https://stackoverflow.com/a/33633386/802196

    0 讨论(0)
  • 2021-02-07 04:04

    for taking a snapshot selecting by area of another UIView

    // viewObject: UIView linked from storyboard
    var bounds= CGRect(x: -viewObject.frame.minX,y: -viewObject.frame.minY,width: view.bounds.size.width,height: view.bounds.size.height)
    
    UIGraphicsBeginImageContext(viewObject.frame.size)
            view.drawHierarchy(in: bounds, afterScreenUpdates: true)
            let outputImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
    
    0 讨论(0)
  • 2021-02-07 04:09

    For example if you want to take the screen shot of the UIView rectangle at position (50,50) with height of (100,150).

    First set the Image Context to the size of the rectangle. This sets the image size.

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,150), false, 0);
    

    Now draw the view in this context in such a way that, the visible part of the screenshot starts at (50,50)

    self.view.drawViewHierarchyInRect(CGRectMake(-50,-50,view.bounds.size.width,view.bounds.size.height) afterScreenUpdates: true)
    

    This clips the screen shot at (100,150) because we set the size of our context. Now take the UIImage from this.

    var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
    
    0 讨论(0)
提交回复
热议问题