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

时间:2014-06-16 18:16:32

标签: ios animation uiview

我无法弄清楚这里发生了什么。我在屏幕上有两个视图作为" 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];

}

1 个答案:

答案 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 {}