我有UIViewController
我正在使用自定义转换(用于模糊)。当我按下关闭按钮时,我希望UIViewController
淡出。我减少了视图的不透明度,它会逐渐消失。在完成块中,我忽略了UIViewController
。它被解雇了,但是在解雇完成之后很快就会出现闪烁。
这就是我正在做的事情:
- (IBAction)closePressed:(id)sender {
[CATransaction setCompletionBlock:^{
[self dismissViewControllerAnimated:NO completion:nil];
}];
CABasicAnimation *fadeOut = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeOut.fromValue = [NSNumber numberWithFloat:1.0];
fadeOut.toValue = [NSNumber numberWithFloat:0.0];
fadeOut.duration = 0.4f;
[self.view.layer addAnimation:fadeOut forKey:@"fadeOut"];
}
无法快速粘贴屏幕截图或任何内容。在显示父UIViewController
之前有一个闪烁。
答案 0 :(得分:3)
当您通过CAAnimation
设置动画时,实际上是动画视图的表示层,而不是实际视图。因此,当动画结束时,您将以动画开始之前的视图结束。
为避免在addAnimation:forKey:
fadeOut.removedOnCompletion = NO;
fadeOut.fillMode = kCAFillModeForwards;
答案 1 :(得分:0)
您是否尝试过如下?
[UIView animateWithDuration:0.4 animations:^
{
self.view.alpha = 0.0;
} completion:^(BOOL finished)
{
[self dismissViewControllerAnimated:NO completion:nil];
}];
您可以使用self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
答案 2 :(得分:0)
尝试将该viewcontroller的不透明设置切换为YES / NO
默认值为YES,因此您可能想尝试NO