ios - 没有子视图的快照视图,或访问子视图的方法
问题描述
我有一个 UIView,它有另一个 UIView 作为子视图,我想在用户执行特定操作时为这些视图设置动画,我想使用snapshotView方法来做到这一点。
问题是我无法仅对主视图进行快照,而另一个视图不是其中的一部分,而且我似乎也无法访问子视图来对其进行转换。所以我的问题是,我可以在没有子视图的情况下对 UIView 进行快照,还是可以通过快照访问子视图?
解决方案
这是可能方法的简化演示(在快照之前隐藏所有子视图并在完成后立即显示)
extension UIView {
func snapshotMe() -> UIView? {
_ = self.subviews.compactMap { $0.isHidden = true }
defer {
_ = self.subviews.compactMap { $0.isHidden = false }
}
return self.snapshotView(afterScreenUpdates: true)
}
}
当然,如果您的视图子视图可能已经处于混合隐藏/可见状态,那么在上面提供的扩展中,您必须提前过滤可见的子视图。
推荐阅读
- r - 如何根据一天中的时间从数据框中导出 2 个数据框?
- python - 从单独的 python 线程更新 newt (snack.py) 接口
- r - /usr/lib/rstudio-server/bin/rserver:/usr/pgsql-12/lib/libpq.so.5:没有可用的版本信息(/usr/lib/rstudio-server/bin/rserver 需要)
- disassembly - 反汇编是否需要分析指针关系(别名)?
- javascript - React 检测 iframe src 的变化
- apache - HHVM 3.21 处于 repo 权威模式,Drupal 7,mod_rewrite 问题
- javascript - 如何禁用某些图像 Javascript 的灯箱?
- java - HttpURLConnection 在 POST 上失败,HTTP 400
- python - 错误:找不到满足要求 busio 的版本(来自版本:无)
- r - 在 dplyr 中旋转和转换 df