如何解决为什么 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 举报,一经查实,本站将立刻删除。