簡體   English   中英

帶有UIScrollView的UIView屏幕截圖

[英]Screenshot of UIView with UIScrollView inside

我有一個UIView,其中包含一個UIScrollView,實際上它包含一個UIImageScrollView,一個可幫助我縮放UIImage的類,並且我想使用縮放后的UIImage拍攝UIView的屏幕快照,發現此功能:

 func captureCrop() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.viewCapturedFoto.frame.size, true, 0.0)
    self.viewCapturedFoto.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image;
}

但是,截屏完成后,新的UIImage會顯示沒有縮放的圖像,這意味着即使縮放了UIImage也不會縮放。 我不知道我解釋得是否正確

我相信您的問題在於傳遞給UIGraphicsBeginImageContextWithOptions函數的size參數。 現在,您傳入的是整個幀的大小,在滾動視圖中,還包括屏幕外的部分。 您可以嘗試將size參數更改為設備屏幕的邊界,或者在最壞的情況下,將UIImageScrollView放在另一個視圖中,並使用此容器視圖的邊界來設置圖像大小。

供您參考的文檔:

宣言

func UIGraphicsBeginImageContextWithOptions(_ size:CGSize,_ opaque:Bool,_ scale:CGFloat)

參量

size:新位圖上下文的大小(以磅為單位)。 這表示UIGraphicsGetImageFromCurrentImageContext函數返回的圖像的大小。 若要獲取位圖的大小(以像素為單位),必須將width和height值乘以scale參數中的值。

嘗試這個。 它返回一個UIView

let screenShot = self.viewCapturedFoto.snapshotViewAfterScreenUpdates(true)

有關更多信息,請訪問Apple Docs的這一部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM