Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 我怎样才能找到“带”的可用重量;SF Pro";字体,并在我的XF iOS和Android应用程序中使用它们?_Xamarin_Xamarin.forms - Fatal编程技术网

Xamarin 我怎样才能找到“带”的可用重量;SF Pro";字体,并在我的XF iOS和Android应用程序中使用它们?

Xamarin 我怎样才能找到“带”的可用重量;SF Pro";字体,并在我的XF iOS和Android应用程序中使用它们?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,据我所知,SF Pro现在是iOS mobile中使用的默认字体。我不清楚如何使用这种字体的不同字体权重,甚至不清楚如何找出可用的字体 有人知道我如何指定两种不同的字体资源NormalFont和BoldFont,并让应用程序在iOS上使用正确的SF Pro字体吗 <ResourceDictionary> <OnPlatform x:TypeArguments="x:String" x:Key="NormalFont">

据我所知,SF Pro现在是iOS mobile中使用的默认字体。我不清楚如何使用这种字体的不同字体权重,甚至不清楚如何找出可用的字体

有人知道我如何指定两种不同的字体资源NormalFont和BoldFont,并让应用程序在iOS上使用正确的SF Pro字体吗

<ResourceDictionary>
    <OnPlatform x:TypeArguments="x:String" x:Key="NormalFont">
        <On Platform="iOS" ???
        <On Platform="Android" Value="Roboto-Regular.ttf#Roboto-Regular" />  
    </OnPlatform>
    <OnPlatform x:TypeArguments="x:String" x:Key="BoldFont">
        <On Platform="iOS" ???
        <On Platform="Android" Value="Roboto-Bold.ttf#Roboto-Bold" />  
    </OnPlatform>
</ResourceDictionary>


为了回答您的问题,我们需要深入了解字体的几个方面及其机制

让我们从如何获取特定字体族的所有权重开始。参考苹果官方版本,我们可以记录所有系统字体的所有权重,如下所示(在iOS项目中):

foreach(UIFont.FamilyNames中的变量族)
{
var name=UIFont.FontNamesForFamilyName(家族);
var namesAsString=string.Join(“,”名称);
WriteLine($“Family:{Family}字体名称:{namesassString}”);
}
您可以通过名称来引用系统字体。系统字体是以点(.-)开始的,例如旧金山字体可以是<代码>。SFUIText Bold ,<代码> .SFUI规则等等。由于这些字体的性质,作为系统的,强烈地鼓励开发者用他们的名字来引用它们。一个原因是他们的名字可能会经常改变

问题是,从iOS 13开始,我们不应该再按名称加载系统字体。(从技术上讲,有一段时间有人建议不要这样做,但iOS 13实际上是通过在您要求系统字体时将
Times New Roman
还给您来强制执行的。)

以下是WWDC 2019的屏幕截图,关于:

尽管如此,您仍然可以按名称引用系统字体。iOS 13发布后,这立即打破了Xamarin的一切。你可以从中看到。目前,他们已经实现了一种变通方法,系统字体(以点开始)仍然可以使用。您可以在xaml中指定如下内容:


但是,我强烈建议您不要使用这样的系统字体

总而言之,您在这里有两个更好的选择:

简单下载和导入旧金山字体。这种字体可以从苹果网站免费下载。(). 之后,请参考Xamarin的官方文件
  • 保持默认系统字体,并在xaml中添加权重属性(粗体、斜体等)
  • 就我个人而言,我会选择第一种方法。这样,您将始终确保您拥有字体文件,并且没有任何更新会更改字体。使用第二种方法时,将始终参考系统字体。这种字体可能(也肯定会)在某个时候发生变化

    如果我们想查看默认系统字体是什么,我们可以这样做:

    var-systemFont=UIFont.SystemFontOfSize(17);
    Debug.WriteLine($“System:{systemFont.FamilyName}”);
    
    您从哪里下载字体?另外,你在应用程序中加载了什么?SF Pro是iOS的默认字体,所以据我所知,没有什么可下载的。至于Android字体,这些是从Google字体下载的,我知道如何设置粗体/常规等。我只是没有找到使用资源设置默认iOS字体的方法,我不知道如何设置不同的字体权重。@Alan2如果无法在表单中设置iOS字体,还可以使用自定义渲染器在本机方法中设置控件的字体。感谢您提供的信息丰富的答案。艾伦和我一起工作,本周不在办公室。我对你的答案投了更高的票,如果他没有及时接受,我认为赏金会自动带着最高的分数进入答案。如果我还有任何问题,我会在评论中问你。