2016-10-24 3 views
3

Каков наилучший способ создания пользовательского сегмента, который позволяет мне нажимать кнопку, а затем контроллер слайдов. Я создал слева направо, но я хочу, чтобы все было по-другому. Я просмотрел несколько видеороликов Youtube и this question, но они не показывают мне, что я хочу.Custom Slide Segue - Xcode 8.0 Swift 3.0

Мой код:

import UIKit 

class SegueFromLeft: UIStoryboardSegue 
{ 
    override func perform() 
    { 
     let src = self.sourceViewController 
     let dst = self.destinationViewController 

     src.view.superview?.insertSubview(dst.view, aboveSubview: src.view) 
     dst.view.transform = CGAffineTransformMakeTranslation(-src.view.frame.size.width, 0) 

     UIView.animateWithDuration(0.25, 
      delay: 0.0, 
      options: UIViewAnimationOptions.CurveEaseInOut, 
      animations: { 
       dst.view.transform = CGAffineTransformMakeTranslation(0, 0) 
      }, 
      completion: { finished in 
       src.presentViewController(dst, animated: false, completion: nil) 
      } 
     ) 
    } 
} 

В принципе, я хочу создать SEGUE, который идет справа налево.

Благодаря

Я использую Xcode 8.0 и Swift 3.0

+0

Удалось ли вам сделать это? Вы попробовали мой ответ? –

ответ

4

Попробуйте это:

class SegueFromLeft: UIStoryboardSegue{ 
    override func perform(){ 
     let src=sourceViewController 
     let dst=destinationViewController 
     let slide_view=destinationViewController.view 

     src.view.addSubview(slide_view) 
     slide_view.transform=CGAffineTransform.init(translationX: src.view.frame.size.width, 0) 

     UIView.animateWithDuration(0.25, 
      delay: 0.0, 
      options: UIViewAnimationOptions.CurveEaseInOut, 
      animations: { 
       slide_view.transform=CGAffineTransform.identity 
     }, completion: {finished in 
       src.present(dst, animated: false, completion: nil) 
       slide_view.removeFromSuperview() 
     }) 
    } 
} 
0

Swift 3.1:

class ProceedToAppStoryboardSegue: UIStoryboardSegue { 

    override func perform(){ 

     let slideView = destination.view 

     source.view.addSubview(slideView!) 
     slideView?.transform = CGAffineTransform(translationX: source.view.frame.size.width, y: 0) 

     UIView.animate(withDuration: 0.25, 
           delay: 0.0, 
           options: UIViewAnimationOptions.curveEaseInOut, 
           animations: { 
           slideView?.transform = CGAffineTransform.identity 
     }, completion: { finished in 

      self.source.present(self.destination, animated: false, completion: nil) 
      slideView?.removeFromSuperview() 
     }) 
    } 
} 
Смежные вопросы