[英]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.