[英]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.