UIView成为可见代表

时间:2017-03-08 17:47:24

标签: ios objective-c iphone uiview

当我们更改视图的隐藏属性时,可以识别视图完全可见或隐藏的确切点,即绘图操作完成。

在我的应用程序中,一旦视图被隐藏,我必须截取屏幕截图,目前我已经添加了330毫秒的延迟,以确保视图完全隐藏,我想摆脱这种任意延迟。

我已经在视图隐藏属性上尝试了几个像KVO这样的东西,我将UIView类子类化并尝试使用viewDidMoveToSuperView委托,但所有这些都不能保证视图绘制已经完成。

1 个答案:

答案 0 :(得分:1)

立即想到两个想法:

  1. 在主队列上安排一个块,该块可能在运行循环的下一次迭代之后被调用(此时应该进行视图重绘)。

    dispatch_sync(dispatch_get_main_queue(), ^{
        // take your snapshot
    });
    
  2. 在动画块中操纵视图的不透明度(hidden无法设置动画,但alpha可以)并使用完成处理程序。

    [UIView animateWithDuration:0 animations:^{
        view.alpha = 0;
    } completion:^(BOOL finished) {
        // take your snapshot
    }];