Xamarin.Formsで以下のXAMLを書くと、若干ですが画像が左にズレる問題があります。
<Grid>
<Button Image=”image.png” />
</Grid>
Imageだけの場合はちゃんと真ん中にくる。
<Grid>
<Image Source=”image.png” />
</Grid>
って言うのをTwitterに呟いてたらどこからともなくメンションが飛んできた。
なるほど、ButtonにはText要素があり、その分のスペースが画像の右側にあるようだ。
修正方法はツイートにもあるGithubにある通りで、AssemblyInfo.csに追記して、拡張ボタンを実装するってことらしい。
まず、AssemblyInfo.csがなかったのでAssemblyInfo.csを作る。
- iOSプロジェクトを右クリック → 追加 → 新しいファイル
- Misc → アセンブリ情報 → 新規
ってやるとPropertiesっていうフォルダとその中にAssemblyInfo.csが作成されるので開く。
以下を追記する
using Xamarin.Forms;
using [iOSプロジェクト名][assembly: ExportRenderer(typeof(Button), typeof(FixedButtonRenderer))]
iOSプロジェクトに新しいクラスファイルを追加して以下を記述
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using UIKit;namespace [iOSプロジェクト名]
{
public class FixedButtonRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
Control.ImageEdgeInsets = new UIEdgeInses(0, 0, 0, 0);
}
}
}
ところで突然現れて解決(回避)方法を教えてくれた彼(?)は何者なのかと思っていたら
ヒ、ヒエ~!