Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 7显示视图控制器,带有自定义过渡,不带动画_Ios_Uiviewanimationtransition - Fatal编程技术网

iOS 7显示视图控制器,带有自定义过渡,不带动画

iOS 7显示视图控制器,带有自定义过渡,不带动画,ios,uiviewanimationtransition,Ios,Uiviewanimationtransition,我需要在另一个视图控制器的中心显示一个具有某种动画效果的视图控制器。我希望转换是可重用的,所以我定义了一个类来实现UIViewControllerAnimatedTransitioning协议。我只需向子视图添加约束,将其定位到中心,更改容器的颜色,然后执行动画: -(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{ if (self.status == Transi

我需要在另一个视图控制器的中心显示一个具有某种动画效果的视图控制器。我希望转换是可重用的,所以我定义了一个类来实现UIViewControllerAnimatedTransitioning协议。我只需向子视图添加约束,将其定位到中心,更改容器的颜色,然后执行动画:

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
if (self.status == TransitioningStatusPresent) {
    UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];

    UIView *containerView = [transitionContext containerView];
    containerView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.25f];
    [containerView addSubview:toView];

    toView.translatesAutoresizingMaskIntoConstraints = NO;

    id c1 = [NSLayoutConstraint constraintWithItem:toView
                                         attribute:NSLayoutAttributeCenterX
                                         relatedBy:NSLayoutRelationEqual
                                            toItem:containerView
                                         attribute:NSLayoutAttributeCenterX
                                        multiplier:1.0f constant:0.0f];

    id c2 = [NSLayoutConstraint constraintWithItem:toView
                                         attribute:NSLayoutAttributeCenterY
                                         relatedBy:NSLayoutRelationEqual
                                            toItem:containerView
                                         attribute:NSLayoutAttributeCenterY
                                        multiplier:1.0f constant:0.0f];
    [containerView addConstraints:@[c1, c2]];

    toView.alpha = 0.0f;
    [UIView animateWithDuration:TRANSITION_DURATION animations:^{
        toView.alpha = 1.0f;
    } completion:^(BOOL finished) {
        [transitionContext completeTransition:YES];
    }];
}else{
    UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey];

    fromView.alpha = 1.0f;
    [UIView animateWithDuration:TRANSITION_DURATION animations:^{
        fromView.alpha = 0.0f;
    } completion:^(BOOL finished) {
        [transitionContext completeTransition:YES];
    }];
}
    [self presentViewController:messageBoxViewController animated:NO completion:nil];

这仅仅是因为在没有动画时不会调用函数-animateTransition:。因此,我认为我不应该把约束放在这个函数中,但我应该把它放在哪里呢

我的应用程序需要与iOS 7兼容,因此不允许使用presentation controller。但我需要进入容器。 那么,如何使用-presentViewController:animated:completion:method为视图控制器提供自定义转换呢


那么我该如何解决这个问题呢?

不要添加约束,尝试使用帧设置动画。它会起作用的。但是如果你把动画设为“否”,那么显然它永远不会被执行。 如果您面临许多问题,那么您可以做的是,拍摄sourceController的快照并将其添加到destinationController中,然后将视图设置为中心动画。确保动画属性为false