2017-08-17 11 views
0

Youtubeの最新のUIに従ってタブ付きメニューを作成し、AndroidとiOSの上部にメニューを表示する必要があります。Xamarin.iOSのタブを一番上に移動するときに、下の空白を削除します。

Androidでのデフォルトの動作は、上部にメニューを表示して正常に動作するようにすることです。 iOSの上で

私はカスタムレンダリング作成していると私はトップにバーの位置を変更するには、次のコードを使用しています:

UIInterfaceOrientation orientation = UIApplication.SharedApplication.StatusBarOrientation; 

if (UIInterfaceOrientation.LandscapeLeft == orientation || UIInterfaceOrientation.LandscapeRight == orientation) 
{ 
    tabSize = 32.0f; 
} 

CGRect tabFrame = this.TabBar.Frame; 

tabFrame.Height = tabSize; 

tabFrame.Y = this.View.Frame.Y; 

this.TabBar.Frame = tabFrame; 
this.TabBar.ContentMode = UIViewContentMode.ScaleToFill; 

// Set the translucent property to NO then back to YES to 
// force the UITabBar to reblur, otherwise part of the 
// new frame will be completely transparent if we rotate 
// from a landscape orientation to a portrait orientation. 

this.TabBar.Translucent = false; 
this.TabBar.Translucent = true; 
//this.TabBar.Translucent = false; 
this.TabBar.SetNeedsUpdateConstraints(); 

私の問題は、いくつかの空白を補うために一番下にあるということですすでに上に移動しているバーのために。

これを修正する方法を知っている人はいますか?

この問題は次の記事にもありますが、私は答えを見つけることができません。

それはで完璧に動作します: https://forums.xamarin.com/discussion/comment/226114/#Comment_226114

答えて

1

PageRenderer

[assembly: ExportRenderer(typeof(ContentPage), typeof(PageiOS))] 
namespace TabBarDemo1.iOS.Renderer 
{ 
public class PageiOS : PageRenderer 
{ 
    public override void ViewWillLayoutSubviews() 
    { 
     base.ViewWillLayoutSubviews(); 

     nfloat tabSize = 44.0f; 

     UIInterfaceOrientation orientation = UIApplication.SharedApplication.StatusBarOrientation; 

     if (UIInterfaceOrientation.LandscapeLeft == orientation || UIInterfaceOrientation.LandscapeRight == orientation) 
     { 
      tabSize = 32.0f; 
     } 

     CGRect rect = this.View.Frame; 
     rect.Y = this.NavigationController != null ? tabSize : tabSize+20; 
     this.View.Frame = rect; 

     if(TabBarController != null) { 
      CGRect tabFrame = this.TabBarController.TabBar.Frame; 
      tabFrame.Height = tabSize; 
      tabFrame.Y = this.NavigationController != null?64:20; 
      this.TabBarController.TabBar.Frame = tabFrame; 
      this.TabBarController.TabBar.BarTintColor = UIColor.Red; 
     } 
    } 
} 

}

私のテスト

enter image description here

PSをTabbedPageRendererを削除し、作成します。ポートレートモードですが、他のモードで調整する必要があります。自分で完了することができます。

+0

これは問題ありません。しかし、実際にはタブ付きのバーはヘッダーにはありません。 YouTubeアプリを参照してください。 このような場合には、上部には不要な空白があります。 – Hetal

+0

@HetalJariwalaあなたが直面している問題を説明するために画像を添付することはできますか? –

+0

@HetalJariwalaは私のテストGIFを見ましたか? –

関連する問題