用户在警报视图中按下交替后,如何关闭模糊效果



这是模糊效果和用户想要返回时显示的警报。 我找不到任何我理解的东西,所以我希望这里有人可以帮助我。感谢您的建议!

这是所有代码,但新代码。

       //
//  Visartotal.swift
//  Segment controll
//
//  Created by Simon Harrysson on 2017-01-28.
//  Copyright © 2017 Simon Harrysson. All rights reserved.
//
import UIKit
var Allabetygtillsamans: Double = 0

class Visartotal: UIViewController
{
    @IBOutlet weak var Tillbaka: UIButton!
    @IBOutlet weak var Börjaomknapp: UIButton!
    @IBOutlet weak var Visartotalreligion: UILabel!
    @IBOutlet weak var VisartotalIMusik: UILabel!
    @IBOutlet weak var Visartotaltmerit: UILabel!
    @IBOutlet weak var VisartotalBild: UILabel!
    @IBOutlet weak var Visartotalmatematik:UILabel!
    @IBOutlet weak var VisartotalEngelska: UILabel!
    var blurEffectView: UIVisualEffectView?
    override func viewDidAppear(_ animated: Bool)
    {
        self.blurEffect = UIBlurEffect(style: .dark)
        self.blurEffectView = UIVisualEffectView(effect: self.blurEffect)
         blurEffectView?.frame = view.bounds
        blurEffectView?.autoresizingMask = [.flexibleWidth, .flexibleHeight] // for supporting device rotation

    }
    var blurEffect: UIBlurEffect?
       @IBAction func TillbakaAction(_ sender: UIButton)
    {
         createAlert(title: "Är du säker på att du vill börja om?", message: "Ifyllda betyg nollställs")
    blurEffectView = UIVisualEffectView(effect: blurEffect)
               view.addSubview(blurEffectView!)
        }
    func createAlert (title:String, message:String)
    {
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
        //CREATING ON BUTTON
        alert.addAction(UIAlertAction(title: "Ja", style: UIAlertActionStyle.default, handler: {
            (action) in
            alert.dismiss(animated: true, completion: nil)
            print ("Jag vill gå tillbaka")
            self.performSegue(withIdentifier: "Tillbaka", sender: nil)
            self.blurEffectView?.removeFromSuperview()
                    }))
        alert.addAction(UIAlertAction(title: "Nej", style: UIAlertActionStyle.default, handler: { (action) in
            alert.dismiss(animated: true, completion: nil)
            print("Nej, jag vill inte gå tillbaka")
            self.blurEffectView?.removeFromSuperview()
        }))
        self.present(alert, animated: true, completion: nil)

    }
    override func viewDidLoad()
    {

        let Allabetygtillsamans = MusikbetygIDouble + BildbetygValtDouble + MatematikbetygvaltIDouble + ReligionbetygvaltDouble + EngelskabetygvaltDouble
        Visartotaltmerit.font = UIFont(name: "Arial", size: 21)

        let totalameritet = String(Allabetygtillsamans)

        VisartotalIMusik.text = MusikbetygValt
        VisartotalBild.text = BildbetygValt
        Visartotalmatematik.text = Matematikbetygvalt
        Visartotalreligion.text = Religionbetygvalt
        VisartotalEngelska.text = Engelskabetygvalt
        Visartotaltmerit.text = totalameritet + ("p")

        if BildbetygValt == "F"
        {
            VisartotalBild.textColor = UIColor.red
        }
        if MusikbetygValt == "F"
        {
            VisartotalIMusik.textColor = UIColor.red
        }
        if Matematikbetygvalt == "F"
        {
            Visartotalmatematik.textColor = UIColor.red
        }
        if Religionbetygvalt == "F"
        {
            Visartotalreligion.textColor = UIColor.red
        }
        if Engelskabetygvalt == "F"
        {
            VisartotalEngelska.textColor = UIColor.red
        }

        switch Allabetygtillsamans {
        case 290...340:
            Visartotaltmerit.textColor = UIColor.green
            Visartotaltmerit.backgroundColor = UIColor.clear
            Visartotaltmerit.backgroundColor = UIColor.clear
        case 230...290:
            Visartotaltmerit.textColor = UIColor.yellow
            Visartotaltmerit.backgroundColor = UIColor.clear
            Visartotaltmerit.backgroundColor = UIColor.clear
        case 220...230:
            Visartotaltmerit.textColor = UIColor.orange
            Visartotaltmerit.backgroundColor = UIColor.clear
        case 0...220:
            Visartotaltmerit.textColor = UIColor.red
            Visartotaltmerit.backgroundColor = UIColor.clear
        default:
            print("defult")
        }

    func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
}

您需要创建一个可以从tillbakaAction函数范围之外访问的blurEffectView变量 - 在viewController中的某个地方。 然后,在您的UIAlertActions中,您可以说self.blurEffectView.removeFromSuperview()删除它。 不会有动画 - 它只会消失。

此外,正如另一位评论者指出的那样,您无需说alert.dismiss...,因为这会自动发生。

作为变量的示例,这将起作用:

var blurEffectView: UIVisualEffectView?
@IBAction func tillbakaAction(_ sender: UIButton) {
    ...
    self.blurEffectView = UIVisualEffectView(effect: blurEffect)
    ...
}

在你的行动中:

alert.addAction(UIAlertAction(title: "Ja", style: UIAlertActionStyle.default, handler: {
    (action) in
    self.blurEffectView?.removeFromSuperview()
    ...

最新更新