我正在使用PresentViewController呈现新屏幕

let dashboardWorkout = DashboardWorkoutViewController()
presentViewController(dashboardWorkout, animated: true, completion: nil)

这将从下到上呈现新屏幕,但我希望它从右到左呈现,而不使用UINavigationController.

我使用的是XIB而不是故事板,我该怎么做呢?

推荐答案

你用的是xib还是storyboard都无关紧要.通常,当您将视图控制器推入演示者的UINavigiationController时,会使用从右到左的过渡.

UPDATE

增加了定时功能kCAMediaTimingFunctionEaseInEaseOut

Sample project个,将Swift 4个实施添加到GitHub


Swift 3 & 4.2

let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.push
transition.subtype = CATransitionSubtype.fromRight
transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.easeInEaseOut)
view.window!.layer.add(transition, forKey: kCATransition)
present(dashboardWorkout, animated: false, completion: nil)


ObjC

CATransition *transition = [[CATransition alloc] init];
transition.duration = 0.5;
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[self.view.window.layer addAnimation:transition forKey:kCATransition];
[self presentViewController:dashboardWorkout animated:false completion:nil];


Swift 2.x

let transition = CATransition()
transition.duration = 0.5
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromRight
transition.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut)
view.window!.layer.addAnimation(transition, forKey: kCATransition)
presentViewController(dashboardWorkout, animated: false, completion: nil)

似乎presentViewController方法中的animated参数在这个自定义转换的情况下并不重要.它可以是任何值,truefalse.

Ios相关问答推荐

使用NavigationStack和.searchable时如何显示大型导航标题?

如何以最可靠的方式删除文本视图中的额外页边距?

[NSJSONSerializationdataWithJSONObserver:选项:错误:]:SON写入中无效的顶级类型

如何通过S定义的对象设置删除基于块的观察者的测试?

Xcode 15模拟器用x86_64编译

为什么IOS多行文本输入在React原生纸张对话框中无法正常工作?

每次我路由到应用程序的主屏幕时,都无法使组合订阅正常工作

更改初始控制器无效

更改订单时如何保存商品的位置?

拔下设备后,DriverKit USB 驱动程序 (dext) 进程不会终止

iOS应用程序崩溃,必需条件为false:isformatsamplerateandchannelcountvalid(format)

Swiftui为什么在点击第二行之前背景不起作用

如何使用 Swift 文档注释

UITableView 页脚,停止浮动内容

在 Swift 中上传带参数的图像

如何使用 Contacts Framework 获取 iOS 9 中的所有联系人记录

将自定义对象保存到 NSUserDefaults

文件是为存档而构建的,它不是被链接的体系 struct (i386)

如何检测快速touch 或单击的tableView单元格

我可以在 UIScrollView 中使用 UIRefreshControl 吗?