Son*_*ali 4 label portable-class-library xamarin.forms
您好我正在使用Xamarin表单PCL构建跨平台应用程序.在那个应用程序中,我需要在标签文本中添加字母间距.我需要标签文字字符之间的空格.有没有办法在所有平台上实现这一目标.在ANDROID中可以使用Letterspacing属性,但我需要所有平台的解决方案,如ios,uwp,win8/8.1.
小智 11
表格控制
public class LetterSpacingLabel : Label
{
public float LetterSpacing { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
以下代码示例演示如何使用LetterSpacingLabel控件:
< LetterSpacingLabel LetterSpacing="0.5" Text="Lorem ipsum dolor sit amet" />
Run Code Online (Sandbox Code Playgroud)
以下屏幕截图显示了iOS上的标签
从这里发布
| 归档时间: |
|
| 查看次数: |
3765 次 |
| 最近记录: |