【发布时间】:2017-11-30 11:08:07
【问题描述】:
我的视图控制器中有一个图像视图。当识别到视图控制器下方的平移手势时,我想关闭视图控制器。虽然我已经实现了使用平移手势关闭视图控制器,但我试图弄清楚如何在关闭之前添加动画,就像在 iPhone 中的照片应用程序中一样。
-(void)addPanGesture{
UIPanGestureRecognizer *gestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dismissViewGes:)];
gestureRecognizer.delegate = self;
[self.view addGestureRecognizer:gestureRecognizer];
}
-(void)dismissViewGes:(UIPanGestureRecognizer *)gesture {
CGPoint velocity = [gesture velocityInView:self.view];
if(velocity.y > 0)
{
CATransition *transition = [[CATransition alloc]init];
transition.duration = 2;
[transition setValue:[NSNumber numberWithFloat:0.5f] forKey:kCATransitionFade];
transition.subtype = kCATransitionFromTop;
[self.view.layer addAnimation:transition forKey:nil];
[[NetWrapper shared] addRemovedController:self];
[self dismissViewControllerAnimated:NO completion:nil];
}
}
我尝试添加一个 CATransition 希望淡出动画能够工作,但它不起作用,一旦应用平移手势,视图就会消失。
如何在视图消失时添加淡出,就像在照片应用程序中一样。
【问题讨论】:
-
您可以在主视图前取一个视图,然后根据需要将背景颜色设置为带有 alpha 的白色
-
我试过了,还是不行。
[UIView animateWithDuration:2.0f animations:^{ [self.view setAlpha:0.5]; } completion:^(BOOL finished) { [UIView animateWithDuration:0.3f animations:^{ [self.view setAlpha:0.1]; } completion:^(BOOL finished) { //[[NetWrapper shared] addRemovedController:self]; [self dismissViewControllerAnimated:NO completion:nil]; }]; }]; -
您忘记了一行 [self layoutifneeded]。在完成部分之前写它
标签: ios objective-c uiviewcontroller