我有一個視圖控制器,在某些動作呈現另一個視圖控制器,覆蓋屏幕的下半部分。動畫呈現控制器視圖,而動畫呈現控制器視圖
當我從底部爲第二個視圖控制器(呈現視圖控制器)設置動畫以覆蓋屏幕的下半部分時,我還想要將呈現視圖設置爲屏幕上半部分的動畫效果。請參閱下面的代碼 -
- (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];
}];
}
的viewForKey:UITransitionContextFromViewKey
回報nil
。我覆蓋shouldRemovePresentersView
在我的自定義UIPresentationController
中返回NO
,但我仍得到nil
。我正在使用UIModalPresentationCustom
作爲我正在呈現的視圖的模式呈現樣式。
編輯:
我意識到,我可以實現通過動畫在我的自定義UIPresentationController
重寫presentationTransitionWillBegin
方法呈現視圖相同的影響。但我想獲得訪問呈現視圖控制器的答案。
編輯: 既然我已經找到了解決辦法,澄清我的問題:(1)這是預期的行爲即presentingViewController將是零的動畫對象?
你已經證明它不能以第一種方式完成,而且你知道如何以第二種方式完成,所以目前還不清楚你在問什麼。你應該回答你自己的問題,展示你的解決方案,然後繼續。 – matt
@matt看到我上面的編輯 - 「因爲我找到了解決方案,澄清我的問題:(1)這是預期的行爲,即presentationViewController將在動畫師對象中爲零?」 –
我回答說。 – matt