ユーザーがUIViewController以外のクラスのボタンをタップしても成功しなかった場合、ステータスバーを非表示にしようとしています。UIViewController以外のクラスでUIAlertControllerを表示しているときにステータスバーを非表示にする方法はありますか?
public extension UIAlertController
{
func show()
{
let win = UIWindow(frame: UIScreen.main.bounds)
let vc = UIViewController()
vc.view.backgroundColor = .clear
win.rootViewController = vc
win.windowLevel = UIWindowLevelAlert + 1
win.makeKeyAndVisible()
vc.present(self, animated: true, completion: nil)
}
}
それは、
jazzgilにより、以下の答えから参照された
:私のUIButton
アクションで
ios - present UIAlertController on top of everything regardless of the view hierarchy
私は実装私はUIAlertController
を提示するには、次のコードを使用しています
以下:
@IBAction func setImage(_ sender: UIBarButtonItem)
{
let alertView = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
// Create the alert's action button
let okAction = UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction!) in
})
let cancelAction = UIAlertAction(title: "CANCEL", style: .destructive, handler: nil)
alertView.addAction(okAction)
alertView.addAction(cancelAction)
alertView.show()
}
私は、拡張内で次の機能を追加しようとしました:
override open var prefersStatusBarHidden: Bool
{
return true
}
はその後alertView.modalPresentationCapturesStatusBarAppearance = true
と同様にalertView.setNeedsStatusBarAppearanceUpdate()
を設定しますが、ステータスバーが常に表示されているようです。
誰かが正しい方向に私を導くことができますか?
ありがとうございます!
を、このメソッドを呼び出す取り戻すために非表示にするには
説明してくださいアンサーと使い方 – Pangu
単にalertStatusBarを呼び出すだけで、ステータスバーを隠すことができ、alertviewコントローラを消した後、コールバックメソッドupdateStatusBarToPreviousStateを表示するだけです。 –
'hideStatusBar'は機能しますが、私のokActionで' updateStatusBarToPreviousState'を呼び出すと、ステータスバーは決して再表示されませんか? – Pangu