SwiftUI - App Store 评级部分,设计克隆
SwiftUI - App Store Rating Section, Design Clone
我正在尝试将我的应用程序中的一个部分定位到 App Store 设计并以相同的方式构建它:
你们中有人知道代码片段是否在某处可用吗?我只从 App Store 找到了动画挑战。
无论如何,我试着自己复制它,但我不明白四舍五入的数字 (4,7) 是如何创建的。它是自定义字体还是标准字体周围有某种层?目前我无法克隆此布局。
这是我尝试过的:
struct AppStoreRatingSection: View {
var body: some View {
HStack{
VStack{
Text("Bewertungen")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(.primary)
Text("4,3")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(.primary)
}
Spacer()
VStack {
Text("Chart here")
}
}
.padding(.horizontal)
}
}
非常感谢!
San Francisco 的圆形字体变体以与主字体相同的方式内置到操作系统中(也有衬线和等宽变体可用)。
要访问它,您需要对 .font()
修饰符中使用的参数进行稍微不同的变体:
Text("4,7")
.font(.system(.title, design: .rounded))
有关详细信息,请参阅 documentation for the SwiftUI Font
object。
另外请注意,您实际显示的文本很可能是格式化数字而不是字符串。如果你让系统为你转换你的数字,它会识别区域设置——所以你看到 4,7 的地方,我在英国,会看到 4.7等等
有几种实现格式化的方法,但使用 iOS 15 的最新方法,它可能类似于:
struct MyView: View {
var rating = 4.6542 // assume this is calculated somewow
var body: some View {
// ...
Text(rating, format: .number.precision(.fractionLength(1)))
.font(.system(.title, design: .rounded))
// etc.
}
}
我正在尝试将我的应用程序中的一个部分定位到 App Store 设计并以相同的方式构建它:
你们中有人知道代码片段是否在某处可用吗?我只从 App Store 找到了动画挑战。
无论如何,我试着自己复制它,但我不明白四舍五入的数字 (4,7) 是如何创建的。它是自定义字体还是标准字体周围有某种层?目前我无法克隆此布局。
这是我尝试过的:
struct AppStoreRatingSection: View {
var body: some View {
HStack{
VStack{
Text("Bewertungen")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(.primary)
Text("4,3")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(.primary)
}
Spacer()
VStack {
Text("Chart here")
}
}
.padding(.horizontal)
}
}
非常感谢!
San Francisco 的圆形字体变体以与主字体相同的方式内置到操作系统中(也有衬线和等宽变体可用)。
要访问它,您需要对 .font()
修饰符中使用的参数进行稍微不同的变体:
Text("4,7")
.font(.system(.title, design: .rounded))
有关详细信息,请参阅 documentation for the SwiftUI Font
object。
另外请注意,您实际显示的文本很可能是格式化数字而不是字符串。如果你让系统为你转换你的数字,它会识别区域设置——所以你看到 4,7 的地方,我在英国,会看到 4.7等等
有几种实现格式化的方法,但使用 iOS 15 的最新方法,它可能类似于:
struct MyView: View {
var rating = 4.6542 // assume this is calculated somewow
var body: some View {
// ...
Text(rating, format: .number.precision(.fractionLength(1)))
.font(.system(.title, design: .rounded))
// etc.
}
}