gpt4 book ai didi

ios - 动态模拟 iOS 动态类型系统文本大小 (UIContentSizeCategory)

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:20 37 4
gpt4 key购买 nike

我想使用不同的系统文本大小选项(包括辅助功能大小)轻松测试我的应用。这些可以在设置应用程序中设置(显示和亮度 => 文本大小或常规 => 辅助功能 => 较大的文本)。

目前我能找到的唯一方法是进入“设置”并使用 UI 更改值(编辑:partial solution 如下所述)。这很慢而且很麻烦。我怀疑有一种方法可以使用私有(private) API 动态更改它,但我不知道该怎么做。由于我的目标是仅将其用于调试,因此可以使用私有(private) API 和 swizzling(此代码不会进入生产环境)。

为了尝试找到一个私有(private) API 来执行此操作,我查看了一些逆向工程资源。我不熟悉反汇编程序、符号表、类转储和寻找我可以使用的私有(private) API,但这是我迄今为止尝试过的:

  • 我成功调整了 -[UIApplication preferredContentSizeCategory](其他帖子说这在过去有效),但这并不影响从 +[UIFont preferredFontForTextStyle: ].

  • 使用反汇编器 IDA我发现 +[UIFont preferredFontForTextStyle:] 在私有(private)框架 UIFoundation.framework 中。 (-[UIApplication preferredContentSizeCategory]UIKit.framework 中,但反汇编看起来一点用处都没有)。

  • 就在我开始写这个问题时(总是这样),我发现了一个 partial solution .可以在方案中设置启动参数以设置启动时的值。这很有用,但不是我想要的。

  • 通过上面的回答,我found用户偏好的值显然存储在“位于模拟器的 data/Library/Preferences 目录中的 com.apple.UIKit.plist 文件中”。我们需要的值可以从命令行实用程序 plutil 中设置。这也是一种进步!但我想在运行时动态更改它。

更多关于我在 IDA 上的结果:

我真的不知道如何阅读反汇编,但是 +[UIFont preferredFontForTextStyle:] 似乎指向一个名为 ___UIFontForTextStyle 的符号,它似乎指向一些有趣的东西- 名为 _getUIContentSizeCategoryUnspecified_getUIContentSizeCategoryPreferenceClass

的发音符号

Disassembly for <code>___UIFontForTextStyle</code>

我还使用命令行实用程序找到了这些符号 nmUIFoundation.framework 上。它们标有小写字母“s”,显然意思是 "The symbol is in an uninitialized data section for small objects." .我不知道这意味着什么(我所收集到的是它们不是类或方法)。

在网络上搜索 _getUIContentSizeCategory... 符号没有任何结果,但附近有另一个符号 _getUIApplicationClass。我搜索了那个,因为它听起来有点笼统,并在一些 WebKit source 中找到了类似的东西.可能没什么,但也许这是 Apple 内部 session 。无论如何,该示例并不能真正帮助我解决问题。

无论如何,感谢您到目前为止的阅读。如果你还在这里,我的问题是:

我希望能够动态模拟动态类型大小首选项的值。这些反汇编符号可能会有所帮助,但也许我走错了路。感觉解决方案很接近,但我无法将所有部分放在一起。

将此值设置为启动参数很好,但不能完全解决我的问题。同样,在 plist 中修改 Simulator 的值也有利于自动化,但不能解决我的问题。

有没有办法在运行时动态改变这个值?

最佳答案

好尴尬!我正在查看一些过时的 iOS 9.x 文档并错过了 UITraitCollection 获得 init(preferredContentSizeCategory: UIContentSizeCategory)var preferredContentSizeCategory: UIContentSizeCategory 在 iOS 10 中,Brandon Williams 向我指出了这一点很有帮助。 .这完美地满足了我的需求。

关于ios - 动态模拟 iOS 动态类型系统文本大小 (UIContentSizeCategory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43879298/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com