快速自定义警报(UIAlertView)

2024-04-06

如何使用 Swift 创建自定义警报?我尝试翻译 Objective c 的指南,但加载了全屏布局

为了简单起见,我可以加载带有透明背景的新布局,我尝试这样做:

listaalertviewcontroller.view.backgroundColor = UIColor.clearColor()
let purple = UIColor.purpleColor() // 1.0 alpha
let semi = purple.colorWithAlphaComponent(0.5)

listaalertviewcontroller.view.backgroundColor = semi

presentingViewController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
self.presentViewController(listaalertviewcontroller, animated: true, completion: nil)

在动画中它是透明的,但是当动画结束时它是不透明的...并且我关闭了视图中的不透明选项...我做错了什么?


代码在 Swift 5 和 Xcode 10 中测试

如何制作您自己的自定义警报

我想做类似的事情。首先,UIAlertView已被弃用,有利于UIAlertController。有关显示警报的标准方法,请参阅此答案:

  • 如何在 Swift 中创建 UIAlertView? https://stackoverflow.com/questions/24022479/how-would-i-create-a-uialertview-in-swift/33340757#33340757

还有两个UIAlertView and UIAlertController并没有真正允许太多的定制。一种选择是使用一些第三方代码。然而,我发现通过显示另一个视图控制器模态来创建自己的警报并不困难。

这里的例子只是一个概念验证。您可以按照自己想要的方式设计警报。

故事板

您应该有两个视图控制器。您的第二个视图控制器将是您的警报。将类名设置为AlertViewContoller和 Storyboard IDalert。 (这两个都是我们在下面的代码中自己定义的名称,没有什么特别的。如果你愿意的话,可以先添加代码。如果先添加代码,实际上可能会更容易。)

将根视图(在警报视图控制器中)的背景颜色设置为透明(或者半透明的黑色对于警报来说很合适)。加上另一个UIView并以约束为中心。使用它作为您的警报背景并将您想要的任何内容放入其中。对于我的示例,我添加了一个UIButton.

Code

ViewController.swift

import UIKit
class ViewController: UIViewController {

    @IBAction func showAlertButtonTapped(_ sender: UIButton) {
        
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let myAlert = storyboard.instantiateViewController(withIdentifier: "alert")
        myAlert.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
        myAlert.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
        self.present(myAlert, animated: true, completion: nil)
    }
}

AlertViewController.swift

import UIKit
class AlertViewController: UIViewController {
    
    @IBAction func dismissButtonTapped(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
    }
}

不要忘记连接插座。

您可以添加一个onTouchUp背景视图的事件侦听器,用于在用户单击弹出窗口外部时关闭弹出窗口。

就是这样。您现在应该能够发出您可以想象到的任何类型的警报。无需第三方代码。

这是我制作的另一个自定义警报。虽然仍然很丑,但它显示了您可以做的更多事情。

其他选项

不过,有时没有必要重新发明轮子。第三方项目给我留下了深刻的印象SDCA警报视图 https://github.com/sberrevoets/SDCAlertView(麻省理工学院许可证)。它是用 Swift 编写的,但您也可以将它用于 Objective-C 项目。它提供了广泛的可定制性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速自定义警报(UIAlertView) 的相关文章

随机推荐