![](/img/trans.png)
[英]How can I ignore data that is not of numerical value in a column when finding the max numerical value in the column?
[英]How can I convert UIContentSizeCategory to a numerical font scale value?
我有我在 SkiaSharp canvas 上绘制的文本,它不会自动调整到 iOS 中的较大可访问性大小设置。 我想在绘制时根据用户的设置缩放字体,但我不知道如何将 UIContentSizeCategory 转换为数值。 有没有办法将 UIContentSizeCategory 值转换为数值?
用户可以通过转到设置->显示和文本大小->更大的文本-> 启用更大的辅助功能大小并将 slider 向右拖动来更改 iPhone 上的字体比例。
与这个slider匹配的值可以得到如下(在Xamarin C#中)
string sizeCategoryAsString =
UIKit.UIApplication.SharedApplication.PreferredContentSizeCategory;
var sizeCategoryAsEnum =
UIContentSizeCategoryExtensions.GetValue(UIApplication.SharedApplication.PreferredContentSizeCategory);
不幸的是,我看不到将这个枚举值转换为比例值的方法,例如1.5
。
我想要一个数值来将我的文本渲染乘以一个单独的渲染系统(在这种情况下是 SkiaSharp,但它可以是其他任何东西,比如游戏)。 我还需要调整 SkiaSharp 中的布局以适应更大的字体。
我知道这在 Xamarin Android 上是可能的,使用以下代码:
var globalFontScale = Resources.Configuration.FontScale;
Xamarin iOS 中是否有等效值?
我在这里发现了一个类似的问题:
不幸的是,那里列出的代码在ExtraExtraExtraLarge
(值为 7)处停止,但如果用户选中较大的可访问性大小选项,则可以使用较大的“可访问性”值。 因此,我进行了自己的测量并得到了这些值。 请注意,这些值与上面链接中的值略有不同。
private double SizeEnumToValue(UIContentSizeCategory sizeCategory)
{
double fontscale = 1;
switch (sizeCategory)
{
case UIContentSizeCategory.ExtraSmall:
fontscale = 0.882758620689655;
break;
case UIContentSizeCategory.Small:
fontscale = 0.937931034482759;
break;
case UIContentSizeCategory.Medium:
fontscale = 1;
break;
case UIContentSizeCategory.Large:
fontscale = 1.0448275862069;
break;
case UIContentSizeCategory.ExtraLarge:
fontscale = 1.16551724137931;
break;
case UIContentSizeCategory.ExtraExtraLarge:
fontscale = 1.24827586206897;
break;
case UIContentSizeCategory.ExtraExtraExtraLarge:
fontscale = 1.36551724137931;
break;
case UIContentSizeCategory.AccessibilityMedium:
fontscale = 1.64137931034483;
break;
case UIContentSizeCategory.AccessibilityLarge:
fontscale = 1.93793103448276;
break;
case UIContentSizeCategory.AccessibilityExtraLarge:
fontscale = 2.33793103448276;
break;
case UIContentSizeCategory.AccessibilityExtraExtraLarge:
fontscale = 2.77931034482759;
break;
case UIContentSizeCategory.AccessibilityExtraExtraExtraLarge:
fontscale = 2.99310344827586;
break;
}
return fontscale;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.