2014-12-27 4 views
21

Я использую Parse & ParseUI. Я хочу, чтобы мой подкласс PFLoginViewController имел прозрачный фон. В будущем я хочу размыть взгляд на фоне.Прозрачный фон для модально представленного viewcontroller

Но ... После завершения анимации 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

7

же, как и выбранный ответ, но визуально через IB:

enter image description here

8

Часть раствора скрыта в этом вопросе. Вам нужно три строки, чтобы сделать фон прозрачным, а именно. isOpaque = falsebackgroundColor = .clear & modalPresentationStyle

Вот полное решение. В вызывающем View Controller, вызовите эту функцию:

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

И в ModalViewController «s viewDidLoad():

override func viewDidLoad() { 
    super.viewDidLoad() 

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

это сработало для меня, когда я установил код в 'Init', а не в методе' viewDidLoad' –

+0

Спасибо, что указали это. Я обновил код. –

+0

@NitinNain, я установил view.alpha = 0.35, но все управление контроллером просмотра также установлено с альфой и размытием –

Смежные вопросы