2016-10-15 11 views
1

アプリケーションのページをiOSのステータスバーの下に配置するには、自分のページ用のカスタムレンダラーを作成しました。以下のXAMLはどうしたら同じように、バーの下にページを移動することになっている:iOSのステータスバーの下にカスタムレンダリングされたページを移動

<local:CustomRenderedPage.Padding> 
    <OnPlatform x:TypeArguments="Thickness"> 
     <OnPlatform.iOS> 
      0, 40, 0, 0 
     </OnPlatform.iOS> 
    </OnPlatform> 
</local:CustomRenderedPage.Padding> 

そこで私は、私はC#2に変換したthis答えを使用していました。

ただし、エラーはなく、ステータスバーの後ろにページが表示されます。 カスタムレンダラが動作しているかどうかを確認するには、動作している背景色も変更しています。

//manually adjust the frame of the main view to prevent it from appearing under the status bar. 
var app = UIApplication.SharedApplication; 

if (!app.StatusBarHidden) 
{ 
    this.View.BackgroundColor = UIKit.UIColor.FromRGB(20, 100, 20); //works 
    this.View.Frame = new CoreGraphics.CGRect(0.0, app.StatusBarFrame.Size.Height, this.View.Bounds.Size.Width, this.View.Bounds.Size.Height - app.StatusBarFrame.Size.Height); // does not work 
} 

Log.WriteLine("Done"); // works 

私は何か間違っているのですか、それともなぜ機能しませんか?

答えて

-1

私は前に尋ねたとして、あなたは、XAML

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:cv="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.CarouselView" 
      xmlns:local="clr-namespace:ButtonRendererDemo;assembly=ButtonRendererDemo" 
      x:Class="ButtonRendererDemo.PageWithCarousel" 
      Padding="0,100,0,0"> 

enter image description here

+0

これはこれが行うことです。 – cocoseis

+0

あなたのケースでは「これ」は何ですか?そして、あなたはこのコードをどこで呼んでいますか? –

+0

ページを下に移動したい。私はこれを私のカスタムページレンダラーの内側から呼び出しています。 – cocoseis

0

でそれを行うことができますから、このコードを呼び出すと、あなたは、「私のカスタムページレンダラの内側から」と答えたWHEREです。しかし、主なポイントはレンダラーであなたがそれを呼び出す場所です。 ここには動作するコードがあります。

[assembly: ExportRenderer(typeof(MainPage), typeof(MainPageRenderer))] 
    namespace ButtonRendererDemo.iOS 
    { 
     class MainPageRenderer : PageRenderer 
     { 

      public override void ViewWillAppear(bool animated) 
      { 
       View.Frame = new CoreGraphics.CGRect(View.Frame.X, View.Frame.Y + 100, View.Frame.Width, View.Frame.Height); 
      } 
     } 
    } 
+0

これはあなたのために働きますか?それは私のためではありません...私は 'OnElementChanged'メソッドの中から自分のコードを呼び出していました。しかし、背景色を 'ViewWillAppear'と' OnElementChanged'から変更しています。 – cocoseis

+0

はい、それは私のために働く。結果は別の回答で投稿した画像と同じです。 View.Frameがまだ設定されていないため、OnElementChageでコードを呼び出すことはできません。 –

+0

バックグラウンドの色の変更は機能しますが、なぜ私にとってうまくいかないのでしょうか? – cocoseis

関連する問題