【发布时间】:2018-02-04 05:51:42
【问题描述】:
我正在尝试在外部屏幕上反映 iPad 视图中正在发生的事情。
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
}
}
问题
在滚动视图中滚动只会在滚动结束后反映在快照中。我相信滚动视图在滚动过程中并没有真正更新它的视图层次结构和布局以提高效率。但是,我需要在滚动过程中捕获它。
我试过了:
- afterScreenUpdates:真
在scrollViewDidScroll中:
- setNeedsDisplay()
- layoutIfNeeded()
- setNeedsLayout()
是否可以在滚动过程中捕获滚动视图?
编辑澄清:
层次结构:
- UIWindow
- ----UIView
- --------UIScrollView
【问题讨论】:
标签: ios swift uiscrollview