模态呈现的viewcontroller的透明背景

问题描述 投票:40回答:3

我正在使用Parse和ParseUI。我希望我的PFLoginViewController子类具有透明背景。将来,我想对背景进行模糊观察。

但是......一旦完成PFLoginViewController的动画制作,背景就变黑了......在动画期间,背景是透明的。

func presentLogin() {
    var loginViewController = LoginViewController()
    var signupViewController = SignUpViewController()

    loginViewController.fields = .UsernameAndPassword | .LogInButton | .PasswordForgotten | .SignUpButton | PFLogInFields.DismissButton
    signupViewController.fields = .UsernameAndPassword | .Email | .DismissButton | .SignUpButton
    loginViewController.delegate = self
    loginViewController.logInView.backgroundColor = UIColor.clearColor()
    loginViewController.logInView.opaque = false
    signupViewController.delegate = self

    loginViewController.signUpController = signupViewController

    self.presentViewController(loginViewController, animated: true) { () -> Void in
        //
    }
}

我的logincontroller使用的子类:

class LoginViewController: PFLogInViewController {

    @IBOutlet weak var _nmcLogoLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let userName = SettingsManager.userName
        let password = SettingsManager.password

        self.logInView.usernameField.text = userName
        self.logInView.passwordField.text = password

        NSBundle.mainBundle().loadNibNamed("LoginViewBranding", owner: self, options: nil)[0] as? UIView

        self.logInView.logo = _nmcLogoLabel

    }

}

我怎样才能让它透明?

附:将清晰的颜色应用于背景颜色子类中没有任何区别

swift parse-platform ios8.1
3个回答
119
投票

固定它。

问题是presentViewController没有保留我所覆盖的视图。

viewController.modalPresentationStyle = .overCurrentContext

做了伎俩。


32
投票

部分解决方案隐藏在问题中。你需要三条线来使背景透明,即。 qazxsw poi qazxsw poi&设置qazxsw poi

这是完整的解决方案。在调用View Controller中,调用此函数:

isOpaque = false

backgroundColor = .clearmodalPresentationStyle

func presentModal() {
    let modalController = ModalViewController()
    modalViewController.modalPresentationStyle = .overCurrentContext
    present(modalViewController, animated: true, completion: nil)
}

22
投票

与所选答案相同,但通过IB直观地看到:

ModalViewController


0
投票

如果有人仍然在透明背景下挣扎,我前段时间找到了这个解决方案 - 我不记得在哪里,但仍然可以使用最新的Xcode和Swift。

viewDidLoad()
© www.soinside.com 2019 - 2024. All rights reserved.