0
私は外部スクリーン上のiPad上で起こっていることをミラーリングしようとしています。スクロールが終了した後にUISmrollを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の<のスナップショットを作成したい - 私これについて知りません
役に立つことを願っています。ビュー階層のスクロールビューを別々に扱うためにこれを使うことができます。これは既に素晴らしいですが、理想的にはビュー階層についての知識なしにやりたいと思っています。 – matteok
scrollView.snapshotImage()(例:someView.snapshotImage())の代わりにViewを保存してください。 –
潜在的なビュー階層を表示するために自分の投稿を編集しました – matteok