Kurze Antwort
Die TextCell
die native UITableViewCell
auf iOS verwendet. Diese native Ansicht berücksichtigt die Einstellungen für die Barrierefreiheit des Geräts. Wenn Sie die Xamarin Forms Label
verwenden, tut es das nicht. Xamarin Forms unterstützt den dynamischen iOS-Typ (noch) nicht.
Erklärung
Die Formulare Label
verwendet die FontSizeConverter
die tatsächliche Schriftgröße einzustellen. Diese Schriftgröße defaults to the value -1
, wenn Sie selbst keinen Wert festlegen. Der Wert -1
führt zur Verwendung von NamedSize.Default
(siehe the Font class).
Wenn Sie einen Blick auf FontSizeConverter
werfen, wenn es den Wert nicht als absoluten Wert analysieren kann, wird es versuchen, in einen NamedSize
Wert zu konvertieren. In diesem Fall wird Device.GetNamedSize
verwendet, um die tatsächliche Größe zu erhalten. Dies geschieht über die Schnittstelle IPlatformServices
, die diese in absolute Werte umwandelt (see the IOSPlatformServices
).
Es gibt auch eine FontExtensions
Klasse, die die gleiche Konvertierung von Named Size in einen absoluten Wert implementiert. Nicht sehr trocken auf den ersten Blick, aber es könnte einen guten Grund dafür geben, von dem ich nichts weiß.
Leider berücksichtigen sowohl die FontExtensions
als auch die IOSPlatformServices
nicht die Eingabehilfen von iOS, sondern geben nur absolute Werte zurück.
Mögliche Lösung
Auf iOS-Geräten können Sie UIKit.UIApplication.SharedApplication.PreferredContentSizeCategory
verwenden, um die aktuelle Erreichbarkeit Kategorie zu erhalten. Basierend auf diesem Wert können Sie eine Skalierung für Ihre Schriftarten festlegen (verwenden Sie DynamicResource
für die Schriftgrößen, wenn Sie sie in XAML verwenden, damit sie zur Laufzeit geändert werden können).
Oder werfen Sie einen Blick auf SushiHangover's answer auf eine ähnliche Frage.
Siehe the preferredContentSizeCategory
on the Apple Developer API reference.
Mögliches Duplikat von http: // stackoverflow.com/questions/38066791/how-do-i-support-barrierefreiheit-font-sizes-in-xamarin-formen –