2017-03-28 155 views
0

我想在我的項目中製作部分屏幕截圖。 但是,我試過輸出的截圖並不好,我想成爲。
這是我的代碼。
Swift 3的部分屏幕截圖

let size = CGSize(width: 398, height: 300) 

    UIGraphicsBeginImageContextWithOptions(size, false, 0); 

    view.layer.render(in: UIGraphicsGetCurrentContext()!) 

    var sourceImage = UIGraphicsGetImageFromCurrentImageContext() 

    sourceImage?.draw(at: CGPoint(x: 0, y: 0)) 

    var cropimage = UIGraphicsGetImageFromCurrentImageContext() 


    UIGraphicsEndImageContext() 
    UIImageWriteToSavedPhotosAlbum(cropimage!,nil,nil,nil) 

enter image description here


我想只保存白色查看。如果我設置寬度和高度,則輸出圖像很小並且不完全。
任何人都可以幫助我嗎?

+0

我相信你必須設置圖形上下文的矩形。另一種方法是拍攝完整的屏幕截圖,然後裁剪圖像。試試Google吧! – LinusGeffarth

+1

也許在[這裏](http://stackoverflow.com/questions/2214957/how-do-i-take-a-screen-shot-of-a-uiview)的答案可以幫助你,只需要截圖具體的子視圖,不需要作物 – Tj3n

+0

感謝您的反饋和建議@ Tj3n。 –

回答

1

延伸的UIView,並捕獲白視角的圖像

// Untested 
import UIKit 

extension UIView { 

    func capture() -> UIImage { 

    UIGraphicsBeginImageContextWithOptions(self.frame.size, self.opaque, UIScreen.mainScreen().scale) 
    self.layer.renderInContext(UIGraphicsGetCurrentContext()!) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return image 
    } 

} 

用法:

let whiteImage = myWhiteView.capture() 
+0

兄弟我寫了這個保存圖片在相冊。 UIImageWriteToSavedPhotosAlbum(cropimage!,nil,nil,nil)但我在Gallery中看到圖像,白色部分很小,黑色屏幕出現在右側。爲什麼這會發生兄弟?非常感謝您的幫助兄弟。 –

+0

確保您捕捉的視圖只是白色視圖,而不是超級視圖... – Damo

+0

你好@Damo,我讓UIView出口白色視​​圖。然後,我寫你的代碼。我聲明var whiteViewImage:UIImage!並在viewDidLoad()內聲明這個whiteViewImage = qrView.capture()。當用戶點擊按鈕時,我會寫照片保存功能。我沒有定義白色視圖的寬度。我只設置了白色視圖的高度。 –