如何在iOS8和Swift中推送视图
我正在更新一个早于iOS5的应用程序,因此需要做很多更改。 在现有的应用程序中,我们将在nib中创建的视图推送到包含UIPickerView/UIDatePicker的屏幕上,以允许用户进行选择 我认为这应该是一件容易迁移到iOS8/Swift的事情,但我在过去的24小时里一直在试图找到最好的方法来实现这一点,包括故事板/Segue、容器视图、视图控制器、UIPopOverpresentationController等。几乎没有达成共识,甚至苹果的示例代码也将UIDatePicker推到了一个表单元格中 这似乎是一个常见的要求,我希望能就其他人如何解决这一问题提供任何建议/意见 非常感谢试试这个如何在iOS8和Swift中推送视图,swift,uiview,uipickerview,Swift,Uiview,Uipickerview,我正在更新一个早于iOS5的应用程序,因此需要做很多更改。 在现有的应用程序中,我们将在nib中创建的视图推送到包含UIPickerView/UIDatePicker的屏幕上,以允许用户进行选择 我认为这应该是一件容易迁移到iOS8/Swift的事情,但我在过去的24小时里一直在试图找到最好的方法来实现这一点,包括故事板/Segue、容器视图、视图控制器、UIPopOverpresentationController等。几乎没有达成共识,甚至苹果的示例代码也将UIDatePicker推到了一个表
self.performsguewithidentifiery您的序列标识符,发件人:self感谢您的回答和寻求澄清的问题。 经过一个周末的调查,我意识到我已经陷入了一个旧的iOS模式 使用iOS8,一切都转移到了viewcontrollerpresentation,允许开发人员以不同的方向控制动画并定义一系列设备上的行为 对于我的问题,我相信答案如下: 使用UIPresentationController显示所需的UIViewController: 视图控制器是显示使用代码、nib或情节提要创建选择器视图的视图 演示控制器管理其演示方式,例如大小、演示样式 这也是处理透明/模糊视图以覆盖现有内容的地方 退房: func SIZEFORCHILDContentContainer容器:UIContentContainer,withParentContainerSize parentSize:CGSize->CGSize PresentedViewContainerView->CGRect的功能框架 UIPresentationController需要一个转换委托来管理符合UIViewControllerTransitionDelegate的表示 { 这反过来需要动画控制器UIViewControllerAnimatedTransitioning来处理动画幻灯片、溶解或更具冒险性的内容: func transitionDurationtransitionContext:UIViewControllerContextTransitioning->NSTimeInterval{ 返回0.5 } func animateTransitiontransitionContext:UIViewControllerContextTransitioning{
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let containerView = transitionContext.containerView()
let animationDuration = self .transitionDuration(transitionContext)
containerView.addSubview(toViewController.view)
UIView.animateWithDuration(animationDuration, animations: { () -> Void in
<<< Animation Here>>>)
}) { (finished: Bool) in
transitionContext.completeTransition(true)
}
解雇的处理方式相同,只需拨打:
dismissViewControllerAnimatedtrue,完成:无
通过文档和优秀的WWDC视频可以获得更多信息,这让我明白了一切:
或者参见苹果的示例代码:
底线-不再像以前那样简单,假设一个设备在一个方向上,但对于更复杂的一点,视图和动画有更大的控制,能够扩展到多个设备
我希望这能帮助处于类似地位的人
谢谢您能提供更多详细信息吗?您能提供更多详细信息吗?至少是您试图转换的obj-c代码。
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let containerView = transitionContext.containerView()
let animationDuration = self .transitionDuration(transitionContext)
containerView.addSubview(toViewController.view)
UIView.animateWithDuration(animationDuration, animations: { () -> Void in
<<< Animation Here>>>)
}) { (finished: Bool) in
transitionContext.completeTransition(true)
}
@IBAction func showOVC(sender: AnyObject) {
let ovc = OverlayViewController()
let overlayTransitioningDelegate = OverlayTransitioningDelegate()
ovc.transitioningDelegate = overlayTransitioningDelegate
self.presentViewController(ovc, animated: true, completion: nil)
}