情节提要中的自定义alertViewController

时间:2018-07-05 14:59:30

标签: ios swift uialertview

我想显示一个弹出窗口(我刚想到UIAlertController),如下图所示:

  

我想实现的目标

enter image description here

我在互联网上发现了类似的问题,但它们都是基于代码的,因此很难将这些内容对准我想要的位置并处理用户交互。

有没有一种方法可以让我在Storyboard中创建一个单独的“东西”,然后将其弹出?我想到了整个ViewController,但这覆盖了整个屏幕。

任何建议或解决方案均受到高度赞赏。

3 个答案:

答案 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)

更重要的是像这样在IB中设置视图的背景 enter image description here

答案 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

希望此帮助。 :)