![](/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.