我想显示一个弹出窗口(我刚想到UIAlertController
),如下图所示:
我想实现的目标
我在互联网上发现了类似的问题,但它们都是基于代码的,因此很难将这些内容对准我想要的位置并处理用户交互。
有没有一种方法可以让我在Storyboard
中创建一个单独的“东西”,然后将其弹出?我想到了整个ViewController
,但这覆盖了整个屏幕。
任何建议或解决方案均受到高度赞赏。
答案 0 :(得分:1)
ViewController
不能一直填充整个屏幕。这只是默认设置。
将子控制器的.modalPresentationStyle
属性设置为.overCurrentContext
并以模态显示。
现在,如果您查看Controller具有透明背景,它将像警报一样显示。
答案 1 :(得分:1)
您需要以模态形式显示它,因此使VC为它提供标识符并将其加载到任何地方
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/style.css') }}">
//
let vc = self.storyboard?.instantiateViewController(withIdentifier: "popupID") as! PopupViewController
vc.sendedStr = "someContent"
vc.myImage = UIImage(named:"flag.png")
vc.providesPresentationContextTransitionStyle = true;
vc.definesPresentationContext = true;
vc.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
self.present(vc, animated:true, completion: nil)
答案 2 :(得分:1)
首先在storyBoard中设计viewController,并记住您的ViewController主视图背景色应该清晰或将其Alpha更改为0.5
在扩展名下方添加
extension UIViewController {
open func presentPOPUP(_ viewControllerToPresent: UIViewController, animated flag: Bool, modalTransitionStyle:UIModalTransitionStyle = .coverVertical, completion: (() -> Swift.Void)? = nil) {
viewControllerToPresent.modalPresentationStyle = .overCurrentContext
viewControllerToPresent.modalTransitionStyle = modalTransitionStyle
self.present(viewControllerToPresent, animated: flag, completion: completion)
}
}
之后,您可以像下面那样使用它
if let alerVC = self.myStoryBoard.instantiateViewController(withIdentifier: "AlertMessageVC") as? AlertMessageVC {
self.presentPOPUP(alerVC, animated: true, modalTransitionStyle: .crossDissolve, completion: nil)
}
您还可以将modalTransitionStyle更改为以下选项
.coverVertical
.flipHorizontal
.crossDissolve
.partialCurl
希望此帮助。 :)