iOS 中的字体大小意外更改

Font Size Changes in iOS unexpectedly

全部 我是 iOS 和 SwiftUI 的新手(2 个月)。我正在努力理解以下行为,希望有人能指出我如何诊断。

我使用此代码在预览提供程序中成功生成了此视图

然而,当我 运行 它在设备或模拟器中时,字体会发生变化(也发生在系统图像中)看起来更像这样(放大)。

下面的视图是在一个非常通用的选项卡视图中呈现的 - 我完全无法理解它,可以使用一些指导。

谢谢

克雷格

    var body: some View {

        VStack(spacing: 0.0) {
            HStack(alignment: .top){
                Text(player.firstName)
                    .bold()
                Text(player.lastName)
                    .bold()
            }
            .font(.title)
            HStack {
                Image(uiImage: UIImage(data: player.playerPhoto) ?? UIImage())
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/, height: 100)
                    .clipShape(Circle())
                    .overlay(Circle().stroke(Color.purple, lineWidth: 4.0))
                Spacer()
                VStack {
                    Text("lifetime averages")
                        .font(.body)
                        .foregroundColor(Color.gray)
                    HStack {
                        Spacer()
                        VStack {
                            Text("Batting")
                                .font(.title2)
                                .bold()
                            Text("\(battingAverage, specifier: "%.3f")")
                        }
                        .padding(.leading)
                        if isPitcher {
                            Spacer()
                            VStack {
                                Text("ERA")
                                    .font(.title2)
                                    .bold()
                                Text("\(earnedRunAverage, specifier: "%.2f")")
                            }
                            .padding(.trailing)
                            Spacer()
                        }
                    }
                }
                Spacer()
            }
            HStack {
                VStack {
                    Text("\(noTeams)")
                        .font(.headline)
                    Text("teams")
                        .font(.subheadline)
                        .foregroundColor(Color.gray)
                }
                .padding(.leading, 10)
                Spacer()
                VStack {
                    Text("\(noSeasons)")
                        .font(.headline)
                    Text("seasons")
                        .font(.subheadline)
                        .foregroundColor(Color.gray)
                }
                Spacer()
                VStack {
                    Text("\(noGames)")
                        .font(.headline)
                    Text("games")
                        .font(.subheadline)
                        .foregroundColor(Color.gray)
                }.padding(.trailing, 10)

            }
            HStack{
                Spacer()
                Text("All Lifetime Stats >")
                    .font(.callout)
                    .foregroundColor(Color.blue)
            }
        }
        .frame(width: 350, height: 200, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
    }

您的代码没有为这两个 Text 元素指定 .font(...)

有没有可能你在别的地方设置了默认字体?

我可以通过这样做来重现您得到的结果(使用 PlayerView 作为独立视图,而不是 table)。

如果使用 UIKit App Delegate,在 willConnectTo session 中:

    let contentView = PlayerView()
        .font(.largeTitle)

或者,如果使用 SwiftUI App

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            PlayerView()
                .font(.largeTitle)
        }
    }
}