gpt4 book ai didi

xamarin.forms - Xamarin 表单 : Letter spacing in Label Text

转载 作者:行者123 更新时间:2023-12-04 22:28:50 25 4
gpt4 key购买 nike

嗨,我正在使用 Xamarin 表单 PCL 构建跨平台应用程序。在该应用程序中,我需要为标签文本添加字母间距。
我需要标签文本字符之间的空间。有什么方法可以为所有平台实现这一点。 Letterspacing 属性在 ANDROID 中可用,但我需要适用于所有平台(如 ios、uwp、win8/8.1)的解决方案。

最佳答案

表单控件

public class LetterSpacingLabel : Label
{
public float LetterSpacing { get; set; }
}

Android 渲染器 代码如下:
public class LetterSpacingLabelRenderer : LabelRenderer
{
protected LetterSpacingLabel LetterSpacingLabel { get; private set; }

protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);

if (e.OldElement == null)
{
this.LetterSpacingLabel = (LetterSpacingLabel)this.Element;
}

var letterSpacing = this.LetterSpacingLabel.LetterSpacing;
this.Control.LetterSpacing = letterSpacing;

this.UpdateLayout();
}
}

iOS 渲染器
    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var data = Element as LetterSpacingLabel;
if (data == null || Control == null)
{
return;
}

var text = Control.Text;
var attributedString = new NSMutableAttributedString(text);

var nsKern = new NSString("NSKern");
var spacing = NSObject.FromObject(data.LetterSpacing * 10);
var range = new NSRange(0, text.Length);

attributedString.AddAttribute(nsKern, spacing, range);
Control.AttributedText = attributedString;
}

下面的代码示例演示了如何使用 LetterSpacingLabel 控件:
< LetterSpacingLabel LetterSpacing="0.5" Text="Lorem ipsum dolor sit amet" />

以下屏幕截图显示了 iOS 上的标签

来自帖子 here

关于xamarin.forms - Xamarin 表单 : Letter spacing in Label Text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41447049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com