2014-12-27 131 views
21

我正在使用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 

    } 

} 

我怎样才能使它透明?

P.s.将clearColor应用于子类中的backgroundColor没有区别

回答

60

修正了它。

问题是,presentViewController不保留我所覆盖的视图。

loginViewController.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext没有办法。

+0

可你也注释代码为 “pushViewController”。 – Alok 2015-07-02 12:22:53

7

相同选择的答案,但在视觉上通过IB:解决方案的

enter image description here

8

部分被隐藏在问题。你需要三条线来使背景透明,即。 isOpaque = falsebackgroundColor = .clear &设置modalPresentationStyle

以下是完整的解决方案。在调用视图控制器,调用这个函数:

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

而且在ModalViewControllerviewDidLoad()

override func viewDidLoad() { 
    super.viewDidLoad() 

    view.isOpaque = false 
    view.backgroundColor = .clear // try other colors, say: .white or black with Alpha etc. 
} 
+1

当我在'Init'中设置代码,而不是在'viewDidLoad'方法中设置代码 – 2017-07-03 10:11:29

+0

感谢您指出这一点。我更新了代码。 – 2017-07-04 12:25:34

+0

@NitinNain,我设置view.alpha = 0.35,但所有视图控制器的控制也设置为alpha和外观模糊 – 2018-02-21 09:37:12

相关问题