问题描述
我需要知道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();
}
}
}
}