0
我試圖在外部屏幕上的iPad上查看視圖中發生的情況。滾動時將UIScrollView捕獲到UIImage中
func startMirroring() {
Timer.scheduledTimer(timeInterval:0.05, target: self, selector: #selector(tick), userInfo: nil, repeats: true)
}
func tick() {
let snapshot = someView.snapshotImage()
placeSomewhereElse(image: snapshot)
}
extension UIView {
func snapshotImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
drawHierarchy(in: bounds, afterScreenUpdates: false)
let snapshotImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return snapshotImage
}
}
問題
滾動的滾動視圖只會體現在快照滾動結束後。我相信在滾動效率期間,scrollview並不真正更新視圖層次和佈局。然而,我需要在滾動過程中捕獲它。
我想:
- afterScreenUpdates:真
在scrollViewDidScroll:
- setNeedsDisplay()
- layoutIfNeeded()
- setNeedsLayout()
在滾動期間是否可以捕獲滾動視圖?
編輯澄清:
層次:
- 的UIWindow < - 我想快照此
- ---- UIView的
- -------- UIScrollView的< - 我不知道這個
我想捕獲整個認爲,「可能」含有scrollviews而不僅僅是特定scrollviews。我可以用它來處理視圖層次結構中的滾動視圖,因此這已經很棒了,但理想情況下,我想在沒有關於視圖層次結構的任何知識的情況下執行此操作。 – matteok
請保留任何View在scrollView.snapshotImage()(例如:someView.snapshotImage())的位置,它對我來說工作得很好。 –
我編輯了我的帖子以顯示潛在的視圖層次 – matteok