在每个xaml元素中使用字体大小与Xamarin.Forms中使用样式的性能差异



我在开发周期的后期有一个XF项目,并且"突然";字体大小已成为一个问题。看来;默认";iPhone 13的字体大小明显大于前几代,尤其是iPhone 8。我的应用程序是";处于危险中";用户在设置中向上推文本大小,但这使问题更加严重。我目前只关注iOS,很遗憾地说,我坚持XF 4.8,原因我不会在这里讨论。

我的大部分代码都为每个实体指定字体大小,大部分都在.xaml文件中列出了特定的大小,其中许多(如果不是大多数的话(实际上都链接到了系统变量,因此这些变量可以是";调谐的";无论是iPhone还是iPad。

我的问题是——如果我仔细阅读并加上";fontsize=";对于.xaml文件,这会对性能造成很大影响吗?

";正确的方式";要做到这一点,当然需要风格。但是,我在App.xaml中有一些样式,但我犹豫不决有两个原因:

  1. 要改变这一点需要做很多工作。我有20多页
  2. 我不确定表现是好是坏,如果更糟,有多糟

正如我所说,我在这里的比赛已经很晚了——除非必要,否则我不会做重大的返工。所以我倾向于添加";fontsize=";到.xml文件。好主意

示例--这两个标签在同一页上。一个没有字体大小规格,因此字母将是正常的、大的或小的,具体取决于设置->显示&亮度->文本大小。另一个指定了字体大小,因此更改文本大小不会影响字母的大小。虽然我认为一个真正好的方法是使用样式,但我正在考虑添加";字体大小";到任何没有它的文本字段。

<Label
x:Name="LblComboHelp"
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="3"
HorizontalOptions="Center"
TextColor="White"
/>
<Label
x:Name="LblCombDataDesc2"
Grid.Row="1"
Grid.Column="1"
IsVisible="False"
FontSize="{x:Static Mobilize:Rsrc.TinyLabelFSize}"
HorizontalTextAlignment="Center"
VerticalTextAlignment="End"
/>

由于您有许多页面,因此可以使用全局样式来实现这一点。

1.在XAML 中创建全局样式(例如labelStyle(

在这里,您可以为View定义属性,例如:FontSizeTextColor等等

<Application.Resources>
<ResourceDictionary>
<Style x:Key="labelStyle" TargetType="Label">
<Setter Property="FontSize" 
Value="Large"
/>
<Setter Property="HorizontalOptions" 
Value="Center" />
<Setter Property="VerticalOptions" 
Value="CenterAndExpand" />
<Setter Property="WidthRequest"
Value="200" />
<Setter Property="TextColor" 
Value="Red" />
</Style>

</ResourceDictionary>
</Application.Resources>

2.将labelStyle应用于页面的Label实例:

<Label  Text="Welcome here" Style="{StaticResource labelStyle}"/>

也可以根据需要替代样式。

有关更多详细信息,您可以查看:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/styles/xaml/application。

最新更新