当我们更改视图的隐藏属性时,可以识别视图完全可见或隐藏的确切点,即绘图操作完成。
在我的应用程序中,一旦视图被隐藏,我必须截取屏幕截图,目前我已经添加了330毫秒的延迟,以确保视图完全隐藏,我想摆脱这种任意延迟。
我已经在视图隐藏属性上尝试了几个像KVO这样的东西,我将UIView类子类化并尝试使用viewDidMoveToSuperView委托,但所有这些都不能保证视图绘制已经完成。
答案 0 :(得分:1)
立即想到两个想法:
在主队列上安排一个块,该块可能在运行循环的下一次迭代之后被调用(此时应该进行视图重绘)。
dispatch_sync(dispatch_get_main_queue(), ^{
// take your snapshot
});
在动画块中操纵视图的不透明度(hidden
无法设置动画,但alpha
可以)并使用完成处理程序。
[UIView animateWithDuration:0 animations:^{
view.alpha = 0;
} completion:^(BOOL finished) {
// take your snapshot
}];