2017-05-17 12 views
0

に複数の画像を配置するカスタム効果私はカスタムエフェクトでXamarin.Forms(ポータブルプロジェクト)を使用していると私はiOSの上のボタンを以下のレイアウトを達成しようとしています:Xamarin.Forms - iOSの - UIButton

___________________________________ 
|         | 
||image2| 'Button 1' |image2|| 
|__________________________________| 

Androidではbutton.SetCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom)を使用して達成できます。ここで、パラメータは適切なAndroidドロワブルです。

今、私はUIButtonに追加されたサブビューを使用していますが、私は上記の動作を達成するのに苦労しています。

button.AddSubView(leftImage); button.AddSubView(rightImage);

任意のアイデア?

+0

はこれを見ます/ 39979091/3901620 – KKRocks

+0

良いアプローチだと思います。たとえば、leftImageを作成すると、長方形を定義し、質問のようにサブビューとして追加します。 – puko

答えて

1

あなたが複数UIImageView Sを追加したり、画像やテキストのために必要なものは何でもパーティションにごUIButtonレイアウトをスライスすることができ、ここでは三分の内の1つのです:http://stackoverflow.com/a:

public override void LayoutSubviews() 
{ 
    var image1 = new UIImageView(new UIImage("btn_image.png")) 
    { 
     Frame = new CoreGraphics.CGRect(0, 0, Frame.Width/3, Frame.Height) 
    }; 
    Add(image1); 
    var image2 = new UIImageView(new UIImage("btn_image.png")) 
    { 
     Frame = new CoreGraphics.CGRect((Frame.Width/3) * 2, 0, Frame.Width/3, Frame.Height) 
    }; 
    Add(image2); 
    base.LayoutSubviews(); 
} 
+0

これは 'UIButton'をサブクラス化する必要がありますか? – ethane

+0

あなたはエフェクトでそれを行うことができるはずですが、カスタムレンダラーを大いに好む – SushiHangover

+0

しかし、私はカスタムレンダラーの完全な柔軟性を必要としないため、効果を選択しました。 答えには、UIButtonをサブクラス化して、ターゲットの ネイティブコントロールをカスタムボタンにキャストすることができます。 'LayoutSubviews()'をオーバーライドする必要はありますか?私はちょうど同様に上記を行う私自身の関数を作成することができます。それとも、そうするのがベストプラクティスですか? – ethane

関連する問題