2017-02-01 7 views
0

私はこれを見つけて答えようとしましたが、運がなかった。Xamarin.Forms MasterDetailPage - マスター上のステータスバーの削除/非表示

詳細からマスターページを開いたときにステータスバー(時間、バッテリー、ネットワークなど)を表示/非表示にしたいという点で、Slackアプリケーションの機能を再作成したいと考えています。したがって、詳細ページを表示すると、ステータスバーが表示されます...マスターページを表示するためにスライドを開くと、消えてしまいます。

追加私はマスター(ContentPage)のカスタムレンダラを作成しようとしました

:viewDidLoadメソッドに

UIApplication.SharedApplication.SetStatusBarHidden(true, UIStatusBarAnimation.Fade); 

が、それは動作しません。私もViewWillAppearメソッドでこれを追加しようとしましたが、うまくいきませんでした。

私はこれがiOSとAndroidの両方で起こりたいと思いますが、現在のところiOSアプリのみに焦点を当てています。

ご協力いただければ幸いです!

免責事項:私は非常に新しくxamarinですので、これが一般的な知識であれば優しくしてください。

答えて

0

まあ、私はiOSのために理解しました!

1:iOSのパッケージであなたのInfo.plistファイルに行を追加します。

<key>UIViewControllerBasedStatusBarAppearance</key> 
<false/> 

2:あなたのMasterDetailPageのカスタムレンダラを作成...

using YourProject; 
using YourProject.iOS; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.iOS; 
using UIKit; 

[assembly:ExportRenderer(typeof(YourMasterDetailPageToCustomize), typeof(MasterDetailCustomRenderer))] 

namespace YourProject.iOS { 
    public class MasterDetailCustomRenderer:PhoneMasterDetailRenderer { 
     public MasterDetailCustomRenderer() {} 
     public override void ViewWillLayoutSubviews() { 
      var item = Element as MasterDetailPage; 
      if (item != null) { 
       if (item.IsPresented) { 
        UIApplication.SharedApplication.SetStatusBarHidden(true, UIStatusBarAnimation.Fade); 
       } else { 
        UIApplication.SharedApplication.SetStatusBarHidden(false, UIStatusBarAnimation.Fade); 
       } 
      } 
      base.ViewWillLayoutSubviews(); 
     } 
    } 
} 

本当にそれだこと。あなたがInfo.plistにその行を追加しない限り動作しません。マスターページを開いたときにステータスバーがフェードアウトし、詳細ページが表示されたときにステータスバーがフェードバックすることが予想されます。

関連する問題