簡體   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