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
}
}
どうすれば透明にできますか?
追伸clearColorをサブクラスのbackgroundColorに適用しても違いはありません
それを修正しました。
問題は、presentViewControllerが、私がカバーしていたビューを保持しないことでした。
viewController.modalPresentationStyle = .overCurrentContext
トリックをしました。
ソリューションの一部は質問に隠されています。背景を透明にするには、3行が必要です。 _isOpaque = false
_ _backgroundColor = .clear
_&modalPresentationStyle
を設定
完全なソリューションは次のとおりです。呼び出し側のView Controllerで、この関数を呼び出します:
_func presentModal() {
let modalController = ModalViewController()
modalViewController.modalPresentationStyle = .overCurrentContext
present(modalViewController, animated: true, completion: nil)
}
_
ModalViewController
のviewDidLoad()
で:
_override func viewDidLoad() {
super.viewDidLoad()
view.isOpaque = false
view.backgroundColor = .clear // try other colors, say: .white or black with Alpha etc.
}
_
誰かがまだ透明な背景で苦労している場合、私はしばらく前にこの解決策を見つけました-どこでも覚えていませんが、最新のXcode&Swiftでうまく動作します。
ContactListViewController2: UIViewController, UITableViewDelegate, UITableViewDataSource,UIViewControllerTransitioningDelegate {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.modalPresentationStyle = .custom
self.transitioningDelegate = self
}