いくつかのネットワーク操作を実行する際に、ユーザインタラクションを防ぎ、進行状況を示すモーダルビューコントローラ(MBProgressHUDに似ていますが、ビューコントローラ)を提示します。UIAlertControllerのようなステータスバーの色を変更せずにビューコントローラを表示する
ビューコントローラにはmodalPresentationStyle = .Custom
があり、移行するデリゲートとカスタムプレゼンテーションコントローラを使用してアニメーション化されます。トランジションをアニメーション化する以外に、プレゼンテーションを駆動するカスタムアクションはありません。
問題は、ビューコントローラが表示されるたびにステータスバーの色が黒に変わることです。 preferredStatusBarStyle
をオーバーライドして常に.LightContent
を返すことができますが、このビューコントローラはビューコントローラの上に表示され、.Default
と表示されることがあります。基本的には、私はUIAlertController
と同じ振る舞いをしたい。
私は、ステータスバースペースの外に提示ビューコントローラを移動するには、プレゼンテーションコントローラを設定しようとしている:
private class SEUIProgressControllerPresentationController: UIPresentationController {
override func shouldPresentInFullscreen() -> Bool {
return false
}
private override func frameOfPresentedViewInContainerView() -> CGRect {
return super.frameOfPresentedViewInContainerView().insetBy(dx: 40, dy: 100)
}
...
}
これらの設定が提示コントローラの上部を移動行いますステータスバーからは消えますが、ステータスバーはまだ影響を受けます。 View Controllerがステータスバーのスタイルを更新するのを止めるプロパティがありますか?