我无法弄清楚这里发生了什么。我在屏幕上有两个视图作为" gate"直到相机准备好录制。然后他们滑出去了。它有效,我很开心,而且非常棒。问题是无论我何时选择去"返回"在导航控制器后退选项(在动画期间或完成后)左侧视图"伸出"在视图控制器上我回去了。
我已尝试删除所有动画 - 并且在ViewWillDisappear方法时从superview中删除视图...但没有运气,当我从录制页面点击返回时,此视图会一直显示在主页上。
-(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];
}
答案 0 :(得分:0)
因此,事实证明问题的根源是由于我在视图控制器主视图中插入视图
[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 {}