【问题标题】:How to get iOS font size and set it to all labels of the app?如何获取 iOS 字体大小并将其设置为应用程序的所有标签?
【发布时间】:2017-01-31 19:15:28
【问题描述】:

我想制作一个应用程序,其中字体大小根据iOS设置中维护的字体大小增加或减少。如果您从设置中更改 iOS 的字体大小,whatsapp 字体大小会相应显示,我想要相同的功能。

【问题讨论】:

  • 可以使用通知让所有控制器在字体更改时通过应用程序然后循环通过超级视图并根据您在设置中设置的大小更改字体。此外,您还需要在 viewDidiAppear 中编写相同的代码,以便在未加载任何屏幕的情况下也可以设置所需的字体大小。希望它有意义。

标签: ios swift accessibility whatsapp dynamic-type-feature


【解决方案1】:

如果为标签使用动态类型,您所要做的就是。这意味着不要显式设置它,而是使用Header 1caption 之类的样式。此样式取决于辅助功能中的用户设置,并且会自动更改。 https://www.raywenderlich.com/77092/text-kit-tutorial-swift

【讨论】:

  • 你能详细说明你的答案吗?
  • 什么样的细节?选择您的标签/按钮,将字体样式设置为例如BodyFootnote。这就是您需要做的所有事情,感谢 Text Kit 和 Apple
【解决方案2】:

您可以对文本使用系统默认大小,例如,

self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

请查找文档here

对于您可以使用的其他组件,例如 labelFontSize() 等等,

+ (CGFloat)labelFontSize;//Returns the standard font size used for labels.
+ (CGFloat)buttonFontSize;//Returns the standard font size used for buttons.
+ (CGFloat)smallSystemFontSize;//Returns the size of the standard small system font.
+ (CGFloat)systemFontSize;//Returns the size of the standard system font.

【讨论】:

    【解决方案3】:

    您正在寻找的 iOS 功能是 Dynamic Type,它仅适用于已实现 text styles 的文本。

    基本上,你必须:

    • 请使用text styles,但请注意,它们的可用性取决于您的 iOS 版本。
    • 在你的界面构建器中勾选adjustsFontForContentSizeCategory属性(iOS 10起)或在代码中实现它,以便告诉系统自动处理它所属对象的动态类型(当然必须使用文本样式).
    • 根据应用可能遇到的不同大小调整所有约束。

    您也可以关注与Dynamic Typeevents 相关的通知,如下所示: WWDC video detailed summary 中的所有内容都得到了很好的解释,其中指示了所有内容及其视频延时以快速获取信息。

    adapting the graphical elements size 以及动态类型实现也有可能。

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2020-05-17
      • 2019-01-15
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      相关资源
      最近更新 更多