具有透明背景的Swift模态视图控制器
我知道这个话题是相当stream行的,但是我是一个编程语言中的一个小问题,事实是,我仍然不明白我把代码放在哪里。 那么,我会告诉整个情况:
我试图做一个有点不同于正常的模态Swift:通过点击一个button,ViewController在屏幕上显示(模式types),但透明的背景。 只有带有标签的蓝色视图才会显示。 当这个ViewController被提交时,它具有透明背景,但是一旦它完成了转换,它将保持黑色背景。 已经停用了不透明的选项,并testing了一些选项,但没有任何解决办法。
有人可以帮助我吗?
video是模拟器上的一个testing案例( https://www.youtube.com/watch?v=wT8Uwmq9yqY )。
我开始迅速,我仍然很迷茫,如何在Xcode编程,我读了一个问题的答案有以下代码来解决这个问题:
self.presentingViewController.providesPresentationContextTransitionStyle = YES; self.presentingViewController.definesPresentationContext = YES; modal.modalPresentationStyle = UIModalPresentationOverCurrentContext;
我在哪里把这个代码?
你可以这样做:
在你的主视图控制器中:
func showModal() { let modalViewController = ModalViewController() modalViewController.modalPresentationStyle = .overCurrentContext presentViewController(modalViewController, animated: true, completion: nil) }
在你的模态视图控制器中:
class ModalViewController: UIViewController { override func viewDidLoad() { view.backgroundColor = UIColor.clearColor() view.opaque = false } }
如果您正在使用故事板:
只需添加一个Storyboard Segue与Kind
设置为Present Modally
到您的模式视图控制器,并在此视图控制器设置以下值:
- 背景=清除颜色
- 绘图=取消选中不透明checkbox
- 演示文稿=过度上下文
正如Crashalot在他的评论中指出的那样:确保Segue仅对Presentation
和Transition
都使用Default
。 使用Current Context
进行Presentation
会使模式变黑而不是保持透明。