2016-12-20 17 views
1

私のXamrin.Formsアプリケーションでは、このメソッドを使用して画面の解像度を取得しました:高さと幅のプロパティを持つインターフェイスを書きましたが、iOSレンダリングではUIScreen.MainScreen.Boundsを使用しました。高さとUIScreen.MainScreen.Bounds.Width。そして約1ヶ月前までは大丈夫でした!今、私がiPhone 5c(画面解像度は1136x640と宣言されている)上で私のアプリを実行すると、値は568x320のスケール2で、iPhone 6(解像度は1334x750と宣言されています)であれば、値は同じです。Xamarinフォーム画面サイズのiOSメソッドが変更されました

変更されたことは誰にも分かりますか?

おかげ

+1

[iOSとユニバーサルWIndowsアプリケーションの画面の密度]の可能な複製(http://stackoverflow.com/questions/41489532/density-of-screen-in-ios-and-universal-windows-app) –

+0

ザあなたが言及した解決策は私の元の解決策ですが、現時点ではうまくいかないのです。より良い、それは動作しますが、私はiPhone 5とiPhone 6の同じ値を受け取りました –

答えて

0

デバイス幅&高さを取得するために、依存関係サービスを使用する必要はありません。

画面の高さや幅の変更や画面が OnSizeAllocatedを()がトリガーされますと、あなたは新しい幅&高さを取得します回転するたびに画面の幅&高さを取得する

最良の方法、

サンプルコード:

using Xamarin.Forms; 

namespace ABC 
{ 
    public class MyPage : ContentPage 
    { 
     private double _width; 
     private double _height; 

     public MyPage() 
     { 
      Content = new Label { 
       Text = "Welcome to Xamarin.Forms!" 
      }; 
     } 

     protected override void OnSizeAllocated(double width, double height) 
     { 
      base.OnSizeAllocated(width, height); 
      _width = width; 
      _height = height; 
     } 
    } 
} 
+0

返信のために@JayPatelに感謝しますが、あなたの提案は私の問題を解決しません。 iPhone 5CとiPhone 6では、メソッドOnSizeAllocatedは同じ値を返します:320 x 568 –

関連する問題