我为标签制作了自定义渲染器,以显示html格式的文本。
问题在于,与Android不同,IOS中的文本很小,我找不到改变它的方法。
我的代码
IOS
[assembly:ExportRenderer(typeof(HtmlFormattedLabel), typeof(HtmlFormattedLabelRenderer))]
namespace YmoApp.iOS
{
public class HtmlFormattedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var view = (HtmlFormattedLabel)Element;
if (view == null) return;
var attr = new NSAttributedStringDocumentAttributes();
var nsError = new NSError();
attr.DocumentType = NSDocumentType.HTML;
var myHtmlData = NSData.FromString(view.Text, NSStringEncoding.UTF8);
Control.AttributedText = new NSAttributedString(myHtmlData, attr, ref nsError);
}
}
}
Android
[assembly:ExportRenderer(typeof(HtmlFormattedLabel), typeof(HtmlFormattedLabelRenderer))]
namespace YmoApp.Droid
{
public class HtmlFormattedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var view = (HtmlFormattedLabel)Element;
if (view == null) return;
Control.SetText(Html.FromHtml(view.Text.ToString()), TextView.BufferType.Spannable);
}
}
}
PCL
var descriptionLabel = new HtmlFormattedLabel()
{
Text = "<http><body style='font-size; 20px'><p style='text-align: justify; font-family: Arial, Helvetica, sans-serif; font-size: 14px'>"
+ _imovel.Anuncio.Descricao + "</p></body></http>",
Margin = new Thickness(20, 0)
};
descriptionLabel.FontSize = 14;
似乎什么都没有生效。
答案 0 :(得分:1)
我想您的问题在于将格式化的字体大小设置为像素高度。 iOS非常重视像素值,在视网膜显示屏上呈现时,14 px的字体大小最终会变得很小。
尝试使用与分辨率无关的字体大小,您应该会很好。
这对我来说也很不对劲:
<body style='font-size; 20px'>
答案 1 :(得分:0)
错误出现在<body style='font-size; 20px'>
中。
将;
替换为:
。