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)
}
}
}
全部 我是 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)
}
}
}