我们如何在Xamarin.iOS中实现大字体可访问性?

我们如何在Xamarin.iOS中实现大字体可访问性?,xamarin,xamarin.ios,accessibility,font-size,large-text,Xamarin,Xamarin.ios,Accessibility,Font Size,Large Text,我的应用程序是使用Xamarin.iOS开发的,我需要让它可以访问。我们在xamarin.iOS中找不到任何帮助来实现大文本可访问性。我在Xamarin.Forms和MonoTouch中找到了解释如何实现它的链接。有人能帮我在Xamarin.iOS上实现大文本可访问性吗?MonoTouch和Xamarin.iOS是一回事,只是名字不同而已 通过完全相同的方式实现,您可以将UILabel或UITextField的Font属性设置为UIFont静态类中的一种可用字体,如下所示: var label

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

MonoTouch和Xamarin.iOS是一回事,只是名字不同而已

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

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

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

为您的UI元素分配一个
uifontextstyle
s,当应用程序启动时,元素的文本大小将根据
uifontextstyle
和用户当前的
辅助功能较大文本设置进行设置:

var uiLabel = new UILabel(new CGRect(40, 40, 200, 40));
uiLabel.Text = "StackOverflow";
uiLabel.Font = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
View.AddSubview(uiLabel);
如果您想动态响应
可访问性较大文本的更改,以便用户不必重新启动应用程序,请订阅
UIContentSizeCategoryDidChangeNotification
并更新您的视图:

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

感谢@Cheesebaron的回复,可能是重复的。如果我们想根据设计师共享的红线给出具体的字体大小,这仍然可以实现吗?谢谢@SushiHangover,但是,我们如何应用红线中给出的特定字体大小,并使其适用于大文本设置。@NarenderRedy真正的问题是,您的设计人员是否在红线文档中包含了
动态类型
注意事项?以及您的UI在动态类型大小方面将支持(或不支持)什么字体大小,因为更改字体大小可能会导致整个UI根据其约束条件回流。并非所有应用程序都支持动态可访问性字体大小,也不需要太多…,这符合您的应用程序要求,应该在您的红线文档/线框/mockappsThanks@SushiHangover中说明。我的情况是,这个应用程序是在没有可访问性的情况下开发的,现在我们需要让它可以访问,所以现在没有红线。但是,我想知道是否有可能在已应用的特定字体大小之上启用大字体可访问性。@NarenderRedy如果可以,您可以为字体指定字体大小倍增器,以确定其缩放方式(向上和向下)基于用户当前选择的辅助功能大小与标准基线字体大小的比较(即在“设置”中关闭大字体时)。因此,如果UI元素应基于
uifontextstyle.Body
的点大小进行跟踪,则获取大字体
Body
的当前点大小(
UIFontDescriptor.PreferredBody.PointSize
)将其按比例放大,然后使用
FromDescriptor
为您的UI元素创建/分配一个
UIFont
。@NarenderReddy我处理它的方法之一是在应用程序启动时为我的字体创建一个字典,每个不同的字体对应一个元素,在一个
UIFont
中,创建该字体以匹配每个不同的
UIFontTextStyle.XXX
设置的大字体指定的当前字体大小
UIFontDescriptor.PreferredBody.PointSize
UIFontDescriptor.PreferredHeading.PointSize
UIFontDescriptor.PreferredSubheadline.PointSize
,等等。。。。