繁体   English   中英

按下后,动画UIView会挂在屏幕上

[英]Animated UIView hangs on screen after pressing back

我不知道这里发生了什么。 屏幕上有两个视图,它们充当“门”,直到照相机准备好进行记录为止。 之后,他们滑出。 它很有效,我很高兴,那太好了。 问题是无论我何时选择在导航控制器的“后退”选项上“返回”(无论是在动画过程中还是在动画完成后),我要返回的视图控制器上的左视图都“伸出”。

我尝试过删除所有动画,并且在使用ViewWillDisappear方法时从超级视图中删除了视图...但是没有运气,当我从录制页面上单击时,该视图会一直出现在主页上。

-(void)animateViewsOut
{
[UIView animateKeyframesWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionCurveEaseIn animations:^{
    _leftView.layer.transform = CATransform3DMakeTranslation(-_leftView.frame.size.width, 0.0, 0.0);
    _rightView.layer.transform = CATransform3DMakeTranslation(_rightView.frame.size.width, 0.0, 0.0);
} completion:^(BOOL finished) {
    [_leftView removeFromSuperview];
    [_rightView removeFromSuperview];
}];
}

和我解决问题的尝试

- (void) viewWillDisappear:(BOOL)animated
{

[super viewWillDisappear:animated];
[_leftView.layer removeAllAnimations];
[_rightView.layer removeAllAnimations];
[_leftView removeFromSuperview];
[_rightView removeFromSuperview];
[[CameraEngine engine] shutdown];

}

因此,事实证明,问题的根源是由于我在视图控制器主视图上插入了视图

[self.view addsubview:_leftView];
[self.view addsubview:_rightView];

我改为为构建在情节提要板上的视图创建一个容器,然后将视图添加为该概述的子视图,并保留相同的动画,只是在完成时(而不是单独删除视图),我只是删除了覆盖容器(更改下面的代码)。

-(void)animateViewsOut
{
[UIView animateKeyframesWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseOut |     UIViewAnimationOptionCurveEaseIn animations:^{
_leftView.layer.transform = CATransform3DMakeTranslation(-_leftView.frame.size.width, 0.0, 0.0);
_rightView.layer.transform = CATransform3DMakeTranslation(_rightView.frame.size.width, 0.0, 0.0);
} completion:^(BOOL finished) {
[_overlayView removeFromSuperview];
}];
}

进行此更改后,在导航控制器中单击时,视图不会保留。

我从viewWillDisappear方法中删除了所有代码,并在动画完成后自行解决了问题,然后删除了覆盖容器。

- (void) viewWillDisappear:(BOOL)animated {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM