如何在 Xamarin Forms iOS 中显示带有小型大写字体样式的标签?

Posted

技术标签:

【中文标题】如何在 Xamarin Forms iOS 中显示带有小型大写字体样式的标签?【英文标题】:How to display a label with small caps font style in Xamarin Forms iOS? 【发布时间】:2018-01-16 17:26:58 【问题描述】:

我的 Xamarin Forms 应用程序设计师为标签字段指定了 Small Caps。在 Xamarin for android 中有几个关于如何执行此操作的讨论,但我找不到任何适用于 ios 的内容。

我知道我需要一个自定义渲染器,并且在 here 上找到了很好的讨论,但在将那篇文章中的 Swift 代码转换为 Xamarin iOS 的 C# 时遇到了挑战。

代码如下:

let systemFont = UIFont.systemFont(ofSize: 24.0, weight: UIFontWeightLight)
let smallCapsDesc = systemFont.fontDescriptor.addingAttributes([
    UIFontDescriptorFeatureSettingsAttribute: [
        [
            UIFontFeatureTypeIdentifierKey: kUpperCaseType,
            UIFontFeatureSelectorIdentifierKey: kUpperCaseSmallCapsSelector
        ]
    ]
])
let font = UIFont(descriptor: smallCapsDesc, size: systemFont.pointSize)

我知道我会在我的 OnElementChanged 方法中添加一些东西,但是 FontDescriptor 没有添加属性方法或属性集合,因此在添加其他属性时遇到了挑战。

【问题讨论】:

【参考方案1】:

FontDescriptor 没有添加属性方法或属性集合

您正在寻找UIFont.FontDescriptor.CreateWithAttributes 方法。

示例:

var systemFont = UIFont.SystemFontOfSize(24, UIFontWeight.Light);
var attributes = new UIFontAttributes(
    new UIFontFeature(CTFontFeatureUpperCase.Selector.UpperCaseSmallCaps),
    new UIFontFeature(CTFontFeatureLowerCase.Selector.LowerCaseSmallCaps)
);
var smallCapsDesc = systemFont.FontDescriptor.CreateWithAttributes(attributes);
var font = UIFont.FromDescriptor(smallCapsDesc, systemFont.PointSize);

【讨论】:

适用于 SystemFontOfSize。我使用应用程序使用的自定义字体(Futura LT Medium)进行了尝试,但没有成功。我通过将 systemFont = ... 替换为 systemFont = Control.Font; 来做到这一点。不知道为什么它不起作用,但我会选择有效的方法!谢谢! @SteveReedSr 并非所有字体都启用了小型大写字母 Open Type 属性,而且我个人不确定 Futura LT Medium(第 3 方字体?)。我会尝试使用不同的字体来检查您的代码(尝试fonts.google.com/specimen/Roboto,因为我知道它有效,var font = UIFont.FromName(@"Roboto", 20); 然后将小写字母 UIFontAttributes 应用到它),如果它没有以小写字母显示,请发布另一个问题.. .

以上是关于如何在 Xamarin Forms iOS 中显示带有小型大写字体样式的标签?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms Android 项目图像未显示但在 iOS 上正确显示

在 Xamarin Forms iOS 中出现 ListView 之前,如何将 ListView 滚动位置设置为底部?

Xamarin Forms - 防止键盘在 UWP、Android、iOS 中的条目焦点上显示

Xamarin Forms (iOS) - 从选取器中删除快捷方式栏

为啥使用 Xamarin Forms 的 iOS 应用程序不显示 Font Awesome?

Xamarin Forms iOS 远程通知不显示