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

为什么 xamarin.forms 中的共享库无法识别 Android/iOS 文件夹中的实现类

如何解决为什么 xamarin.forms 中的共享库无法识别 Android/iOS 文件夹中的实现类

我是 Xamarin.forms 的新手。

我需要根据标签内容来测量标签的大小。因为这是特定于平台的。我在共享库中创建了一个接口,在 iOS 和 Android 文件夹中创建了两个实现。 下面是接口的声明:

public interface ITextMeasurement
{
    double MeasureTextHeight(string text,double width,double fontSize,string fontName = null);
        
}

在特定平台,例如iOS,我有这样的实现类:

class TextMeasurementImpl : ITextMeasurement
    {
        public double MeasureTextHeight(string text,string fontName = null)
        {
            var nsText = new Nsstring(text);
            var boundSize = new Sizef((float)width,float.MaxValue);
            ....
            var sizef = nsText.GetBoundingRect(boundSize,options,attributes,null).Size;
            return (double)sizef.Height;
        }
    }

但是,当我尝试实例化共享库中的类时,类名被标记为“找不到类型或命名空间名称‘TextMeasurementImpl’”。由于 Android 和 iOS 实现具有相同的签名,因此我没有检查平台。即使我做了检查,我仍然收到错误

 TextMeasurementImpl labelMeas = new TextMeasurementImpl().MeasureTextHeight();

我正在点击此链接来创建特定于平台的实现: https://gist.github.com/alexrainman/82b00160ab32bef9e69dee6d460f44fa

解决方法

你用错了方法,你需要这样做:

在您的表单项目中:

double  textHeight = DependencyService.Get<ITextMeasurement>().MeasureTextHeight("your text",width,fontsize,fontname);

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