为什么 iOS ButtonRenderer 中标签的宽度始终为 0?

时间:2021-02-05 16:59:03

标签: c# xamarin xamarin.forms xamarin.ios

我需要知道iOS中ButtonRenderer-Class中标题标签的宽度,但始终为0,标签上有文字显示,所以不应该是0。

protected override void OnElementChanged(...){
    base.OnElementChanged(e);
    { if(Control != null) {
      nfloat size = Control.TitleLabel.Frame.Size.Width;  //why always 0?}}}

1 个答案:

答案 0 :(得分:0)

在 iOS 中,您需要在方法 LayoutSubviews 中获取它,如下所示

using Foundation;
using System;


using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

using CoreGraphics;
using App11.iOS;
using System.ComponentModel;

[assembly:ExportRenderer(typeof(Button),typeof(MyButtonRenderer))]
namespace xxx.iOS
{
    public class MyButtonRenderer:ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                                    
            }

        }

        public override void LayoutSubviews()
        {
            base.LayoutSubviews();          
            nfloat size = Control.TitleLabel.Bounds.Width;

         }



        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            if(e.PropertyName=="Width"|| e.PropertyName == "Height")
            {
                LayoutIfNeeded();

            }
        }

    }
}
相关问题