2015-08-10 1 views
3

У меня есть подклассификация кнопки, так что я могу получить в основном кнопку с закругленными краями и значок с правой стороны.Изображение кнопки не центрируется по вертикали

По правде говоря, только проблема заключается в том, что значок не центрирован по вертикали и не может понять, как я могу влиять на вертикальное выравнивание.

Исходное изображение имеет прямоугольную форму, и я использую CreateResizableImage с предопределенными UIEdgeInsets структуры, как показано ниже, но то, что я вижу это:

enter image description here

МОЯ подкласс код:

partial class CustomGreyButton : UIButton 
    { 
     public CustomGreyButton (IntPtr handle) : base (handle) 
     { 
      this.Layer.BorderColor = new CoreGraphics.CGColor (0, 0, 0); 
      this.Layer.BorderWidth = 1; 
      this.Layer.CornerRadius = 20; 

      // top, left, bottom, right 
      UIEdgeInsets btnEdgeInsets = new UIEdgeInsets (0,44,0,44); 

      UIImage stretchingButtonImage = new UIImage ("ios_images/grey_btn.png").CreateResizableImage (btnEdgeInsets); 


      this.SetBackgroundImage (stretchingButtonImage, UIControlState.Normal); 
      this.SetBackgroundImage (stretchingButtonImage, UIControlState.Selected); 
      this.SetBackgroundImage (stretchingButtonImage, UIControlState.Highlighted); 
      this.ClipsToBounds = true; 
      this.AdjustsImageWhenHighlighted = false; 

      //this.TitleColor = UIColor.White; 
      this.SetTitleColor (UIColor.White, UIControlState.Normal); 
      this.SetTitleColor (UIColor.Black, UIControlState.Highlighted); 
      this.SetTitleColor (UIColor.Black, UIControlState.Selected); 
     } 
    } 
+0

Может вам загрузите графику, которую вы пытаетесь добавить. Ваши UIEdgeInsets не выглядят правильно, но трудно сказать, не видя графику. – JordanMazurke

ответ

1

После долгих проб и ошибок выяснилось, что это похоже на работу для моего кода:

UIImage stretchingButtonImage = new UIImage ("ios_images/grey_btn.png"); 

stretchingButtonImage.ImageWithAlignmentRectInsets (btnEdgeInsets); 

Кажется, я не использую

CreateResizableImage

1

Я нашел ту же проблему на xamarin forum

Как понятно, вы должны положить YAlign = "Центр" на ваш Im возраст

+0

Извините, не используя Xamarin.Forms, я должен был указать. –