我想在iOS中製作自定義展開控制器動畫。如何將CGRect框架值傳遞給自定義過渡動畫控制器
這是一個iPad應用程序,並在主屏幕上有一個大小爲160 * 160的大方形按鈕。我已經將模態連接連接到下一個視圖控制器場景。我試圖實現的是當我點擊UIButton時,目標視圖控制器應該從按鈕擴展,並且動畫完成後將全屏動畫。
我已經子類NSObject和創建ExpandAnimationController,實現了transitionDuration和animateTransition方法。但是我堅持要確定目標視圖控制器視圖的初始框架。
我知道一個按鈕我可以靜態設置框架,但在場景中出現的位置有多個按鈕,並且每個按鈕都必須將模式切換到不同的視圖控制器,而不是如何將按鈕幀傳遞給動畫控制器設置初始視圖框架。
我這樣做只是爲了學習目的後,嘗試raywanderlich的自定義視圖控制器轉換教程。所以現在的問題是將一個框架對象從「源控制器」傳遞給動畫控制器。我已經搜索過,互聯網沒有太多的定製轉換問題。任何幫助將不勝感激。
這裏是我試過,在ExpandAnimationController代碼,
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
// 1. Fetch all the required objects.
UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIView *containerView = [transitionContext containerView];
CGRect finalFrame = toVC.view.frame;
// 2. Set initial frames.
// This is where I am stuck.
CGRect initialFrame = CGRectZero;
toVC.view.frame = initialFrame;
[containerView addSubview:toVC.view];
// 3. Do the animation.
NSTimeInterval duration = [self transitionDuration:transitionContext];
[UIView animateWithDuration:duration animations:^{
fromVC.view.alpha = 0.5;
toVC.view.alpha = 0.5;
toVC.view.frame = finalFrame;
} completion:^(BOOL finished) {
fromVC.view.alpha = 1.0;
toVC.view.alpha = 1.0;
toVC.view.frame = finalFrame;
[transitionContext completeTransition:YES];
}];
}
在我採用UIViewControllerTransitioningDelegate
源控制器,創建了一個ExpandAnimationController實例,並像下面使用,
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
return _expandAnimationController;
}
但之後 - prepareForSegue
被稱爲我想將發件人按鈕幀傳遞給過渡動畫控制器。
在此先感謝,快樂編碼!
發佈您的代碼獲得伊娃值,所以我們可以看到你做了什麼至今 – Lefteris 2014-11-03 08:27:17
@Lefteris嘿,我已經編輯了帖子,並添加代碼,你詢問,檢查。 – 2014-11-03 08:36:19