【问题标题】:How can we achieve large font accessibility in Xamarin.iOS?我们如何在 Xamarin.iOS 中实现大字体可访问性?
【发布时间】:2017-02-09 00:01:25
【问题描述】:

我的应用程序是使用 Xamarin.iOS 开发的,我需要使其可访问。我们在 xamarin.iOS 中找不到任何帮助来实现大文本可访问性。我发现 this 链接解释了如何在 Xamarin.Forms 和 this 关于 MonoTouch 中实现它。有人可以帮助我如何在 Xamarin.iOS 上实现大文本可访问性。

【问题讨论】:

标签: xamarin xamarin.ios accessibility font-size large-text


【解决方案1】:

UIFontTextStyles 之一分配给您的UI 元素,当应用启动时,元素的文本大小将根据UIFontTextStyle 和用户当前的Accessibility Larger Text 设置进行设置:

var uiLabel = new UILabel(new CGRect(40, 40, 200, 40));
uiLabel.Text = "StackOverflow";
uiLabel.Font = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
View.AddSubview(uiLabel);

如果您想动态响应Accessibility Larger Text 的更改,以便用户不必重新启动您的应用,请订阅UIContentSizeCategoryDidChangeNotification 并更新您的视图:

NSNotificationCenter.DefaultCenter.AddObserver(
    new NSString("UIContentSizeCategoryDidChangeNotification"),
    (NSNotification obj) =>
    {
        Console.WriteLine("Update layouts/subviews/layers/etc...");
        View.SetNeedsLayout();
    },
    null
);

【讨论】:

  • 感谢@SushiHangover,但我们如何应用红线中给出的特定字体大小并使其适用于大文本设置。
  • @NarenderReddy 真正的问题是您的设计师是否在您的 Redline 文档中包含了Dynamic Type 考虑事项?以及根据动态字体大小,您的 UI 将支持(和不支持)什么字体大小,因为更改字体大小可能会导致整个 UI 根据其约束重排。并非所有应用程序都支持动态可访问性字体大小,也不需要...,这取决于您的应用程序要求,应在您的红线文档/线框/模拟应用程序中说明
  • 谢谢@SushiHangover。我的情况是,该应用程序首先是在没有可访问性的情况下开发的,现在我们需要使其可访问,所以现在没有这样的红线。但是,我想知道是否有可能在已经应用的特定字体大小之上启用大字体可访问性。
  • @NarenderReddy 当然可以,您可以根据用户当前选择的可访问性大小与标准基线字体大小(即当在设置中关闭大字体时)。因此,如果应该根据UIFontTextStyle.Body 的磅值来跟踪 UI 元素,则获取大字体 Body 的当前磅值 (UIFontDescriptor.PreferredBody.PointSize) 将其乘以您的比例并创建/分配 UIFont 使用FromDescriptor 到您的 UI 元素。
  • @NarenderReddy 一种我处理它的方法之一是在应用程序启动时为我的字体创建一个字典字典,每个不同字体的一个元素,在那个@ 987654334@ 是为了匹配每个不同的UIFontTextStyle.XXX 当前字体大小从Setting's Large Fonts 分配的......UIFontDescriptor.PreferredBody.PointSizeUIFontDescriptor.PreferredHeadline.PointSizeUIFontDescriptor.PreferredSubheadline.PointSize 等......
【解决方案2】:

MonoTouch 和 Xamarin.iOS 是同一个东西,只是名称不同。

以完全相同的方式实现,将UILabelUITextFieldFont 属性设置为UIFont 静态类中的一种可用字体,如下所示:

var label = new UILabel
{
    Font = UIFont.PreferredBody
};

这应该会根据您在 iOS 上的辅助功能设置自动缩放字体。

【讨论】:

  • 感谢@Cheesebaron 的回复。如果我们想根据设计师共享的红线给出特定的字体大小,这仍然可以实现吗?
猜你喜欢
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多