У меня есть контроллер вида, который на определенном действии представляет другой контроллер вида, который закрывает нижнюю половину экрана.Анимация представления представления контроллера во время анимации представленного представления контроллера
Когда я одушевляю второй контроллер вида (представленный контроллер представления) снизу, чтобы закрыть нижнюю половину экрана, я также хочу анимировать отображающий вид до половины половины экрана. Смотрите ниже код -
- (void)animatePresentationWithTransitioningContext:(id<UIViewControllerContextTransitioning>) transitioningContext
{
UIViewController *presentedController = [transitioningContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *presentedControllerView = [transitioningContext viewForKey:UITransitionContextToViewKey];
UIView *containerView = [transitioningContext containerView];
presentedControllerView.frame = [transitioningContext finalFrameForViewController:presentedController];
CGPoint center = presentedControllerView.center;
center.y = containerView.bounds.size.height;
presentedControllerView.center = center;
[containerView addSubview:presentedControllerView];
// This returns nil
UIView *presentingControllerView = [transitioningContext viewForKey:UITransitionContextFromViewKey];
[UIView animateWithDuration:[self transitionDuration:transitioningContext] delay:0.0 usingSpringWithDamping:1.0 initialSpringVelocity:0.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
CGPoint presentedViewCenter = presentedControllerView.center;
presentedViewCenter.y -= containerView.bounds.size.height/2.0;
presentedControllerView.center = presentedViewCenter;
// This is where I want to move the presenting view controller.
// of course it does not work.
CGPoint presentingViewCenter = presentingControllerView.center;
presentingViewCenter.y -= containerView.bounds.size.height/2.0;
presentingControllerView.center = presentingViewCenter;
} completion:^(BOOL finished) {
[transitioningContext completeTransition:finished];
}];
}
The viewForKey:UITransitionContextFromViewKey
возвращается nil
. Я перепробовал shouldRemovePresentersView
, чтобы вернуть NO
в моем обычном UIPresentationController
, но я все еще получаю nil
. Я использую UIModalPresentationCustom
в качестве модального стиля презентации для представления, которое я представляю.
EDIT:
я понял, что я могу достичь того же аффектом анимировать вид ПРЕДСТАВЛЕНИЕ путем переопределения метода presentationTransitionWillBegin
в моем обычае UIPresentationController
. Но я хотел бы получить ответ на доступ к контроллеру представления представления.
EDIT: Поскольку я нашел решение, уточняя мой вопрос: (1) Является ли это ожидаемое поведение т.е. presentingViewController будет ноль в объекте аниматора?
Вы доказали, что это невозможно сделать первым путем, и вы знаете, как сделать это вторым способом, так что непонятно, что вы спрашиваете на данный момент. Вы должны ответить на свой вопрос, показывая свое решение, и двигаться дальше. – matt
@matt см. Мое редактирование выше - «Так как я нашел решение, разъясняющее мой вопрос: (1) Является ли это ожидаемым поведением, то есть, presentingViewController будет нулевым в объекте аниматора?» –
И я ответил на это. – matt