在Swift中按下背景时,关闭由xib加载的视图

时间:2016-01-15 19:54:13

标签: swift uiview popup xib

我在ViewController中有一个函数,当按下按钮时会加载一个Xib文件,我将这个Xib显示为“弹出窗口”,并在背景中添加一个灰色,如下所示:

var grayBackgroundView = UIView()
var popupView:PopupView?

func showPopupView(){

    self.showGrayBGView(self, grayView: grayBackgroundView)

    popupView = NSBundle.mainBundle().loadNibNamed("PopupView", owner: self, options: nil)[0] as? PopupView
    self.view.addSubview(popupView!)

    popupView?.center = self.view.center
    popupView?.alpha = 0.5
    popupView?.clipsToBounds = false

    UIView.animateWithDuration(1.0, delay: 0.0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0.50, options: UIViewAnimationOptions.LayoutSubviews, animations: { () -> Void in
        self.popupView?.alpha = 1
        self.view.layoutIfNeeded()
        }) { (value:Bool) -> Void in

    }

}

在这个Xib中,我创建了一个调用hidePopUpView()函数的按钮,该函数从视图中删除了这个Xib:

func hidePopupView(){

    UIView.animateWithDuration(0.5, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0.50, options: UIViewAnimationOptions.CurveEaseOut, animations: { () -> Void in

        self.grayBackgroundView.alpha = 0
        self.popupView!.alpha = 0

        }) { (value:Bool) -> Void in
            self.popupView!.removeFromSuperview()
            self.grayBackgroundView.removeFromSuperview()

    }

}

我的问题是:有没有办法只有当我触摸灰色背景并调用hidePopupView()才能删除此Xib?

我还有另一个问题。您是否认为有一种更好的方式来显示一个弹出式窗口,考虑到我需要添加一些输入字段并使用它们?

App design

0 个答案:

没有答案
相关问题