微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么 iOS ButtonRenderer 中标签的宽度始终为 0?

我需要知道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?}}}

解决方法

在 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();

            }
        }

    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。