Xamarin.Forms で iOS のステータスバーとナビゲーションバーの色を動的に変えたい(仮)
前回の記事ではナビゲーションバーに色付きアイコンを置けるようにしました。
shunsukekawai.hatenablog.com
ナビゲーションバー系繋がりで、ステータスバーとナビゲーションバー自体の色をページによって動的に変えたかったのでやってみました。
タイトルに(仮)が付いてるのは結構無理やりというか、もうちょいスマートなやり方ないのかなー。と思ってるからです。誰か教えてください。
完成形
作成方法
PCL 側にこんなカスタムコントロールを作成します。
ナビゲーションバーの色(NavigationBarColor)とステータスバーのスタイルをデフォルトか(IsUseDefaultBarStyle)の BindableProperty を追加した ContentPage を継承したクラスです。
iOS の プロジェクトに CustomRenderer を作成します。
- OnElementChanged で上で作成したプロパティを取得してメンバー変数に格納
- ViewWillAppear でステータスバーの種類を設定、ナビゲーションバーがある場合は色を設定
- 右側のアイコンボタンの種類を設定(前回の記事分のアイコンにモードを設定するヤツ)
iOS プロジェクトの info.plist に View controller-based status bar appearance というプロパティを追加し、NO を設定します。
これをしないとステータスバーのスタイルが変更できません。
各ページをカスタムコントロールにして、プロパティを設定
以下のように遷移するようになってます。今までのもひっくるめて Github にアップしておきます。
MainPage→SecondPage
↓
ModalPage
github.com