2017-09-21 7 views
0

Xamarin.IOSのカスタムコントロールにiOS UIViewを使用しています。私はXamarin.Forms Xamlでこのコントロールを使用しました。iOS UIView Draw(CGRect rect)は、VerticalOptions = "CenterAndExpand"を設定しても呼び出されません。

Grid Horizo​​ntalとVerticalOptions = "CenterAndExpand"を設定した場合、UIViewのMy Draw()は呼び出されません。値を 'FillAndExpand'に設定するとうまく動作します。

私の要件は、私のカスタムコントロールを画面の中央に配置することです。 これを処理する方法はありますか?または私の画面の中央に私のUIViewを表示することができる他の方法があります。

<ScrollView> 
    <Grid HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"> 
     <localControls:CustomUIView /> 
</Grid></ScrollView> 

このDraw(CGRect rect)メソッドを使用して、Screenで使用可能なサイズの幅と高さを取得する必要があります。したがって、私のドローは必須です。

答えて

0

AbsoluteLayoutを使用すると、画面の中央に表示させることができます。 AbsoluteLayout内

ビューは、4つの値を使用して配置されている:

  • X - ビューのアンカー
  • のY(垂直)位置 - ビューのアンカー
  • YのX(水平)位置
  • 幅 - ビュー
  • 高さの幅 - ビューの高さ

これらの各値は比例値または絶対値として設定できます。

値は、境界とフラグの組み合わせとして指定されます。 LayoutBoundsはx、y、width、heightの4つの値からなるRectangleです。このようなXAMLで

コード:

<ContentPage.Content> 
    <AbsoluteLayout> 
     <local:MyCustomView AbsoluteLayout.LayoutBounds="0.5,0.5,300,200" AbsoluteLayout.LayoutFlags="PositionProportional" BackgroundColor="Red"/> 
    </AbsoluteLayout> 
</ContentPage.Content> 

AbsoluteLayout.LayoutBounds="0.5,0.5,300,200" AbsoluteLayout.LayoutFlags="PositionProportional"は、アンカーが画面の中央であることを意味します。

enter image description here

ところで、私はあなたのコードを試してみましたが、それは、Visual Studio 15.3.5とXamarinと私の側に正常に動作します:そして、ビューの幅と高さは、それがこのように動作します300と200

です.iOS 11.0.0.0を更新すると、CenterAndExpandの問題が解決する場合があります。

関連する問題