2015-08-24 16 views
0

我曾試圖在IOS動畫左側邊欄,如下鏈接 http://www.appdesignvault.com/custom-transition-slide-out-navigation/ ,我得到的輸出如下 enter image description here如何將動畫左邊欄與ios中的flipkart相似?

但我需要像下面類似的輸出過渡到flipkart enter image description here

如何在swift中製作斜視圖控制器?預先感謝您的幫助。

@Ashraf,目前我使用了下面的代碼根據您的指導方針。

func presentNavigation(transitionContext: UIViewControllerContextTransitioning) { 
      let container = transitionContext.containerView() 
      let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) 
      let fromView = fromViewController!.view 
      let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) 
      let toView = toViewController!.view 

      let size = toView.frame.size 
      var offSetTransform = CGAffineTransformMakeTranslation(size.width - 120, 0) 
      offSetTransform = CGAffineTransformScale(offSetTransform, 0.6, 0.6) 

      snapshot = fromView.snapshotViewAfterScreenUpdates(true) 

      container.addSubview(toView) 
      container.addSubview(snapshot) 

      let duration = self.transitionDuration(transitionContext) 

      UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.8, options: nil, animations: { 

       self.snapshot.transform = offSetTransform 

       }, completion: { finished in 

        transitionContext.completeTransition(true) 
      }) 

     } 

     func dismissNavigation(transitionContext: UIViewControllerContextTransitioning) { 

      let container = transitionContext.containerView() 
      let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) 
      let fromView = fromViewController!.view 
      let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) 
      let toView = toViewController!.view 

      let duration = self.transitionDuration(transitionContext) 

      UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.8, options: nil, animations: { 

       self.snapshot.transform = CGAffineTransformIdentity 

       }, completion: { finished in 
        transitionContext.completeTransition(true) 
        self.snapshot.removeFromSuperview() 
      }) 
     } 

@ Ashraf I had tried code as follows 

    func degreesToRadians(floatValue: Float) -> CGFloat { 
      return CGFloat(floatValue) * CGFloat(M_PI)/180.0 
    } 


    func presentNavigation(transitionContext: UIViewControllerContextTransitioning) { 
     let container = transitionContext.containerView() 
     let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) 
     let fromView = fromViewController!.view 
     let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) 
     let toView = toViewController!.view 

     let size = toView.frame.size 
     var offSetTransform = CGAffineTransformMakeTranslation(size.width - 120, 0) 
     offSetTransform = CGAffineTransformScale(offSetTransform, 0.6, 0.6) 

     snapshot = fromView.snapshotViewAfterScreenUpdates(true) 

     container.addSubview(toView) 
     container.addSubview(snapshot) 

     let duration = self.transitionDuration(transitionContext) 

     UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.8, options: nil, animations: { 

//   self.snapshot.transform = offSetTransform 

      var t: CATransform3D = CATransform3DIdentity 
      t.m34 = 1.0/500.0 
      var floatValue: CGFloat = self.degreesToRadians(60.0) 
      t = CATransform3DRotate(t, floatValue, 0, 1, 0) 
      self.snapshot.transform = t; 

      }, completion: { finished in 

       transitionContext.completeTransition(true) 
     }) 

    } 

和AM接收爲「無法鍵入‘CAtransform3D’的值賦給類型的值‘CGAffineTransform’」

+2

使用CATransform3D以透視來達到上述效果。 – Sandeep

回答

1

你可以使用這個第三方控制器,它給出相同的輸出flipkart側菜單link

+0

謝謝,我會盡力回覆 – Sakthimuthiah

1

使用CATransform 3D錯誤。嘗試更多的東西是這樣的:

#define degToRad(radians) ((radians) * (180.0/M_PI)) 

CATransform3D t = CATransform3DIdentity; 
t.m34 = 1.0/500.0; 
t = CATransform3DRotate(t, degToRad(60.0), 0, 1, 0); 
yourLayer.transform = t; 
+0

謝謝,它給「使用未解析的標識degToRad」。怎麼修? – Sakthimuthiah

+0

我很抱歉。忘了添加degToRad。 –

+0

因爲您需要將其添加到視圖控制器的圖層中。 –

相關問題