自定义segue的方向

花了挺久时间,终于通过google在stake overflow上找到了解决方式。


总结一下:重写一个custom的segue,在storyboard的右边设置segue为custom,并设置其对应的class。


创建一个segue的类,继承UIStoryboardSegue,代码如下:


import UIKit


class SegueFromTop: UIStoryboardSegue {

    

    

    override func perform()

    {

        let src = self.source

        let dst = self.destination

        

        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)

        dst.view.transform = CGAffineTransform(translationX: 0, y: -src.view.frame.size.height)

        

        UIView.animate(withDuration: 0.25,

                                   delay: 0.0,

                                   options: UIViewAnimationOptions.curveEaseInOut,

                                   animations: {

                                    dst.view.transform = CGAffineTransform(translationX: 0, y: 0)

        },

                                   completion: { finished in

                                    src.present(dst, animated: false, completion: nil)

        }

        )

    }

}


亲测可用!!!!!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Segue 是在 iOS 应用开发中用来实现场景之间转换的方法。通常用于在故事板中连接两个场景,它可以在按下按钮或者执行其他动作时自动触发转换。Segue 会在触发时创建并配置新场景的视图控制器对象,并将其添加到视图层级中。开发者可以通过重写 prepare(for:sender:) 方法来配置目标场景的对象,在这个方法中可以进行数据传递和其他准备工作。 ### 回答2: 在Swift中,segue是用于在不同视图控制器之间进行页面跳转的一种方式。通过segue,我们可以在两个视图控制器之间建立一个连接,并在需要时执行跳转操作。 在使用segue之前,我们必须首先在故事板中创建视图控制器,并确定每个视图控制器的关系。然后,我们可以在源视图控制器中创建一个按钮或其他触发跳转的界面元素。 当触发事件(例如按钮点击)时,我们可以使用performSegue(withIdentifier:sender:)方法来执行跳转操作。这个方法接受一个segue的标识符参数以及一个可选的sender参数,sender可以是触发跳转的界面元素。 当执行segue时,系统会自动检查标识符,并按照故事板中设定的关系,将源视图控制器和目标视图控制器连接起来。然后,系统会自动调用prepare(for:sender:)方法,我们可以在这个方法中进行一些准备工作,例如传递数据给目标视图控制器。 最后,系统会自动加载目标视图控制器中的视图,并将其显示在屏幕上。我们可以在目标视图控制器中实现一些逻辑,例如显示数据、处理用户交互等。 除了手动执行segue外,我们还可以使用unwind segue来实现返回操作。为了使用unwind segue,我们需要在目标视图控制器中创建一个返回方法,然后在源视图控制器中将该方法拖拽到某个界面元素上,就像创建普通的segue一样。 总而言之,segueSwift中一种用于实现视图控制器之间页面跳转的机制。通过创建segue,并在合适的时机执行,我们可以在应用程序中非常方便地进行界面之间的切换。 ### 回答3: 在Swift中,segue是一种用于控制器之间页面转场的机制。它通过在Storyboard中的对象之间创建连接来实现页面之间的导航。 在Storyboard中,我们可以通过Ctrl+拖拽或者在代码中使用performSegue(withIdentifier:sender:)方法来创建segue。每个segue都有一个唯一的标识符,我们可以使用这个标识符在代码中执行对应的seguesegue可以分为两种类型:非导航类segue和导航类segue。 非导航类segue用于在控制器之间进行简单的页面切换,如从一个控制器跳转到另一个控制器: ```swift performSegue(withIdentifier: "segueIdentifier", sender: self) ``` 导航类segue用于在控制器之间进行导航,比如在导航控制器中进行push和pop操作: ```swift performSegue(withIdentifier: "segueIdentifier", sender: self) ``` 我们可以在segue的前后通过prepare(for:sender:)方法来传递数据。在prepare方法中,我们可以通过segue的destination属性来获取目标控制器,并将数据传递给目标控制器。 ```swift override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "segueIdentifier" { let destinationVC = segue.destination as! DestinationViewController destinationVC.data = self.data } } ``` 总之,Swift中的segue是控制器之间页面转场的一种机制,它能够通过在Storyboard中创建连接来实现页面之间的导航,并可以传递数据给目标控制器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值