能否完全关闭项目中的Accessibility?使系统辅助设置对应用无影响
如何在iOS项目中完全屏蔽系统辅助功能设置对应用的影响
全局层面彻底屏蔽
- 强制关闭粗体文本适配:在项目的
Info.plist文件里添加UIApplicationDisableBoldText键,将其值设为YES,这样不管用户系统里有没有开启粗体文本,应用内的字体都不会变粗。 - 固定字体大小,忽略动态类型:在应用启动代码里(
AppDelegate或SceneDelegate)强制设置全局内容大小类别为固定值,示例代码如下:
设置后,应用内所有依赖动态类型的字体都会固定为对应尺寸,不会随系统设置变化。// iOS 13+ 适配SceneDelegate的场景 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = scene as? UIWindowScene else { return } let window = UIWindow(windowScene: windowScene) self.window = window // 固定为中等尺寸,不受系统字体大小设置影响 UIApplication.shared.preferredContentSizeCategory = .medium window.rootViewController = ViewController() window.makeKeyAndVisible() }
单个控件单独屏蔽
如果不需要全局修改,只想针对特定控件做处理:
- 给
UILabel、UIButton等控件设置adjustsFontForContentSizeCategory = false,同时直接指定固定字体,不要使用preferredFont(forTextStyle:)这类适配动态类型的方法,示例代码:
这样该控件就不会响应系统的粗体文本和字体大小调整了。let titleLabel = UILabel() titleLabel.font = UIFont.systemFont(ofSize: 18) titleLabel.adjustsFontForContentSizeCategory = false
注意提醒
这种做法违背Apple的无障碍设计规范,除非有必须执行的特殊业务场景,否则不建议实施——辅助功能是为了帮助有特殊需求的用户正常使用应用,屏蔽后会直接影响这部分用户的体验。
内容的提问来源于stack exchange,提问作者SeanKly
相关产品推荐
相关产品推荐

