You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI Text默认自动转大写异常问题排查求助

SwiftUI Text默认显示大写的排查方向(主Target独有)

以下是针对主Target中Text自动大写、Widget Target无此问题的排查方向:

  • 检查全局Text外观/扩展设置
    主Target的根视图(如App结构体或入口View)可能通过Text.appearance()设置了全局样式,比如添加了.textCase(.uppercase)。另外排查是否存在自定义Text扩展,默认给所有Text添加了大写修饰符,例如:

    extension Text {
        func globalStyle() -> some View {
            self.textCase(.uppercase)
        }
    }
    

    同时确认是否在根视图通过.environment(\.defaultTextStyle, ...)注入了全局文本样式。

  • 对比主/Widget Target的Info.plist本地化设置
    检查主Target的Info.plist中Localization native development region或CFBundleLocalizations的设置,部分区域的系统本地化规则可能会强制文本大写,而Widget Target的本地化配置不同。

  • 检查自定义字体的属性设置
    如果使用了自定义字体,打开主Target的Asset Catalog,选中对应字体,查看右侧检查器的Font Properties是否勾选了All Caps选项。Widget Target可能未使用该字体或未开启此属性。

  • 排查自定义环境变量
    确认是否存在自定义EnvironmentValues扩展,给Text设置了默认的大写文本格式,且仅在主Target中注入了该环境值。例如:

    private struct ForceUppercaseKey: EnvironmentKey {
        static let defaultValue: Bool = true
    }
    extension EnvironmentValues {
        var forceUppercase: Bool {
            get { self[ForceUppercaseKey.self] }
            set { self[ForceUppercaseKey.self] = newValue }
        }
    }
    

    若存在此类设置,检查主Target根视图是否添加了.environment(\.forceUppercase, true),而Widget未添加。

  • 检查主Target专属的编译宏/代码逻辑
    排查代码中是否存在针对主Target的编译宏(如#if MAIN_TARGET),重写了Text的初始化方法,自动将输入字符串转为大写。Widget Target未启用该宏,因此不受影响。

  • 清理Xcode缓存
    尝试删除Xcode的Derived Data(路径:Xcode → 设置 → 位置 → Derived Data → 打开文件夹删除),重新编译主Target,排除预览缓存导致的异常显示问题。

内容的提问来源于stack exchange,提问作者bjorn.lau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:57:36