2014-02-18 45 views
0

使用Xamarin.iOS開發iPhone應用程序。 我想實現與iPhone iOS7主屏幕中相同類型的動畫,您可以在其中放大應用程序。我在集合視圖中有一組圖片。每張照片都對應一個人,在那裏你可以點擊圖片,到達下一個視圖控制器,在那裏你可以獲得關於該人的信息。Xamarin PushViewController放大到子視圖

現在我正在從底部到頂部進行動畫 - 是否可以實現我所需的動畫類型?

public override void ItemSelected (UICollectionView collectionView, NSIndexPath indexPath) 
      { 
       UIStoryboard MainStoryboard = UIStoryboard.FromName ("MainStoryboard_iPhone",null); 
       PersonDetailViewController personDetailViewController = MainStoryboard.InstantiateViewController ("PersonDetailViewController") as PersonDetailViewController; 
       personDetailViewController.personID = _viewController.Category.Persons [indexPath.Row].Id; 
       this._viewController.NavigationController.PushViewController (personDetailViewController,false); 
       var animation = CABasicAnimation.FromKeyPath("transform.translation.y"); 
       animation.Duration = 0.3f; 
       animation.From = NSNumber.FromFloat(this._viewController.View.Frame.Height); 
       animation.To = NSNumber.FromFloat(0f); 
       this._viewController.NavigationController.View.Layer.AddAnimation(animation, "animate"); 
       this._viewController.NavigationController.View.Layer.AnimationForKey("animate"); 

      } 
+0

您可以在iOS7上使用自定義視圖控制器轉換。看看這裏:http://docs.xamarin.com/guides/ios/platform_features/introduction_to_ios_7/ – Krumelur

回答

0

檢查出this sample at objc.io的縮放轉換 - 希望你可以從Objective-C轉換。這裏是動畫部分:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext 
{ 
    UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; 
    UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; 
    [[transitionContext containerView] addSubview:toViewController.view]; 
    toViewController.view.alpha = 0; 

    [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{ 
     fromViewController.view.transform = CGAffineTransformMakeScale(0.1, 0.1); 
     toViewController.view.alpha = 1; 
    } completion:^(BOOL finished) { 
     fromViewController.view.transform = CGAffineTransformIdentity; 
     [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; 

    }]; 

}