2014-12-27 16 views
21

Parse & ParseUI kullanıyorum. PFLoginViewController alt sınıfımın saydam bir arkaplana sahip olmasını istiyorum. Gelecekte, arka plan üzerinde bulanık bir bakış atmak istiyorum.Saydam olarak sunulan viewcontroller için saydam arka plan

Ancak .... PFLoginViewController uygulamasının animasyon tamamlandığında, arka plan siyah olur ... Animasyon sırasında arka plan şeffaftı.

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 
     // 
    } 
} 

My logincontroller en kullanılan alt sınıf:

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 

    } 

} 

Nasıl saydam yapmak için?

P. ClearColor'u alt sınıftaki backgroundColor'a uygulamak,

cevap

60

Düzeltildi.

Sorun şu ki, presentViewController, benim kapsadığım görünümü saklamıyordu. Bu hile yaptı. Seçilen cevap olarak aynı fakat görsel IB aracılığıyla

+0

ayrıca "pushViewController" kodunu yorum yapabilirsiniz çağıran View Controller, bu işlevini çağırın. – Alok

7

: solüsyonun

enter image description here

8

Bölüm söz konusu gizlidir. Arka planı şeffaf hale getirmek için üç satıra ihtiyacınız var, viz. isOpaque = falsebackgroundColor = .clearmodalPresentationStyle

İşte tam çözüm.

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

Ve içinde

ModalViewController 'ın viewDidLoad():

override func viewDidLoad() { 
    super.viewDidLoad() 

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

Bu, "Init" kodunu "viewDidLoad" yönteminde değil, –

+0

içinde ayarladığımda bana çalıştı. Bunu işaretlediğiniz için teşekkürler. Kodu güncelledim. –

+0

@NitinNain, view.alpha = 0.35'i ayarlıyorum, ancak tüm view controller kontrolleri de alfa ve bak bulanıklığı ile ayarlandı –