- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Swift 中创建自定义 View Controller 转换时遇到了一些问题。我找到了这个优秀的教程 http://mathewsanders.com/interactive-transitions-in-swift/但我无法弄清楚如何在没有 Storyboard 的情况下创建过渡(我正在开发的应用程序不使用界面生成器或 Storyboard )。
期望结果的 GIF:
http://mathewsanders.com/assets/transitions-3/Menu-3.gif
具体来说,我遇到的问题是在使用 segues 的这一部分:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
let menu = segue.destinationViewController as MenuViewController
menu.transitioningDelegate = self.transitionManager
}
@IBAction func unwindToMainViewController (sender: UIStoryboardSegue){
// bug? exit segue doesn't dismiss so we do it manually...
self.dismissViewControllerAnimated(true, completion: nil)
}
如果您想放弃 segue 和 Storyboard 路线,您如何创建这样的过渡?
我的目标是使用平移手势向下滑动 UICollectionView 详细 View 以关闭(类似于 Facebook 照片关闭它/关闭 View Controller 的方式,我知道 Facebook 为此使用 ScrollView ,但我需要使用 UICollectionView 和充当单元格详细 View 的 UIViewController)。
最佳答案
所以您需要做的是将您的代码放入平移手势识别器的事件处理程序中。当手势识别器的状态更改为 UIGestureRecognizerStateBegan 时,您需要使用 UIViewController 的 presentViewController:animated:
方法开始转换。
class MyViewController: UIViewController {
var transitionPercentage: CGFloat = 0.0
func handlePanGestureRecognizer(gestureRecognizer: UIPanGestureRecognizer) {
let gestureTranslationX: CGFloat = gestureRecognizer.translationInView(view).x
switch gestureRecognizer.state {
case .Began: {
let menuViewController: MenuViewController = MenuViewController()
menuViewController.transitioningDelegate = self.interactiveTransitionManager;
presentViewController(menuViewController, animated: true, completion: nil)
}
case .Changed: {
//Here you are going to want to figure out the percentage of your interactive transition. Feed it a threshold of how far you want the finger to move before finishing the transition, and then calculate a percentage for it using our gestureTranslationX variable above.
transitionPercentage: CGFloat = gestureTranslationX / thresholdValue; //threshold value should be something like self.view.frame.size.width. Our percentage should be no less than 0.0 and no greater than 0.999999. You should probably have logic that prevents this value from violating either one.
interactiveTransitionManager.updateInteractiveTransition(transitionPercentage) //transitionPercentage is whatever CGFloat variable you use to track the pan state from 0.0 to 1.0
}
case .Cancelled, .Ended: {
//Here you can put logic that uses the transitionPercentage to figure out whether to complete the transition or cancel it.
if transitionPercentage >= 0.5 {
transitionManager.finishInteractiveTransition()
} else {
transitionManager.cancelInteractiveTransition()
}
}
}
}
}
因此,我假设您已经按照问题中提到的博文中的概述为交互式过渡设置了所有其他内容,但如果您有任何其他问题或需要更多代码,请不要犹豫,在我的回答中发表评论。
关于ios - 如何在没有 Storyboards/Unwindng Segues 的情况下在 Swift 中使用 UIViewControllerAnimatedTransitioning?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100429/
我一整天都遇到同样的错误,我知道这是在说 Storyboard 中没有识别出 segue,但确实如此。以下是我认为相关的代码:1.为 segue 发出信号的按钮的 IBAction。 -(IBActi
我有一个从 A View Controller 到 B View Controller 的 unwind segue。 在B中做了一个网络操作,操作完成后,响应会显示在A View Controlle
我正在创建一个应用程序,家长可以在其中登录并查看有关其本地托儿中心的信息。但是,为登录运行 View Controller 的代码无法正常工作。一旦用户按下登录按钮,我希望我的代码使用标识符“Show
刚刚遇到一个奇怪的问题。我有一个启动画面,它自动使用自定义 segue (fade-to-segue) 转到主页 ViewController。自定义 segue 工作正常,但一旦实现,我在主页上的其
以编程方式创建的 segue 在 performSegueWithIdentifier: 上使应用程序崩溃,不过我真的不想使用 Storyboard。 - (void)viewDidLoad { [s
我想我一定在这里遗漏了一些简单的东西,但我不知道它是什么。 我必须支持来自同一个 View Controller 的多个 segue,所以我很自然地想使用 segue 标识符。我的代码由于某种原因无法
当用户在警告时点击“确定”按钮时,我如何才能将用户带到自定义 View Controller ? 我有一个主 Controller -> 导航 Controller -> 第二个 View Contr
在 TableView Controller 中,我试图获取在我继续之前选择的行的索引(最终将传递此信息以准备继续)。我已经实现了这个功能: var selectedQuestionCell: Ind
我正在 Xamarin Studio 中开发一个应用程序(所以它是 C#),它有一个包含多个 TextField 的表单,我想在 segue 之前验证整个屏幕> 到下一个屏幕执行。单击按钮时,它正在使
我有一个带有标识符的 segue。 当我按下函数 shouldPerformSegueWithIdentifier 中的按钮时,我得到一个空标识符 什么会导致这样的问题?我设置错了什么? 这是我的代码
我有一个奇怪的问题。我在 Storyboard中创建了 2 个 View Controller :testSegueViewcontroller 和 nextPageViewController。 t
我下面的代码试图将一个值从 twoviewcontroller 转移到 View Controller 。 segue 正在工作,我可以从 View Controller 转到 View Contro
我正在尝试使用自定义segue,当单击按钮时,它会使 View 向右或向左“滚动”。我添加了一个如下所示的自定义类 class horizontalSegue : UIStoryboardSegue
我有一个带有 Root View Controller 的 UINavigationController。我的 UINavigationController 也设置为我的应用程序的 Initial V
您好,我正在尝试使用 prepare for segue 方法执行一个 segue。我在关注这个问题 this但我无法成功注册。当我单击注册按钮时,它所做的只是注册用户并停在那里。我从 View Co
当 Storyboard上有一个按钮连接退出时,我了解如何使用展开转场。但是在我的应用程序中,我使用推送转场从 TableViewController 转到 ViewController。所以我的导航
我要实现的目标的背景: MainViewController 呈现 TableVC。我将点击一个单元格以显示 DetailVC。能够通过 TableVC 或 DetailVC 上导航栏上的 doneB
在我的 Storyboard中,模态转场将用户带到登录屏幕(从主屏幕)。然后,我从注册屏幕添加了一个 PUSH segue 到下一个屏幕(创建配置文件),该屏幕嵌入在导航 Controller 中(创
我有大约 6 个 segue 在 prepareForSegue 方法中执行相同的操作,但是,我想为我的 unwind segue 跳过此操作,但我无法弄清楚如何确定传递的 segue 是 unwin
因此,我开始在XCode 4.3.2中使用 Storyboard 。我从Master-Detail应用程序(iPad的拆分 View 应用程序)开始。在详细信息 View (名为DetailVC)中,
我是一名优秀的程序员,十分优秀!