Ios 如何将文本的字体大小从.largeTitle设置为.headline
我有一个文本,我想在它出现时减小字体大小,从Ios 如何将文本的字体大小从.largeTitle设置为.headline,ios,swift,swiftui,Ios,Swift,Swiftui,我有一个文本,我想在它出现时减小字体大小,从.largeTitle到.headline 以下是我目前正在尝试的内容(不起作用): struct MyView: View { @State private var fontSize: CGFloat = 100 var body: some View { GeometryReader { geometry in Text("Big Text - Small Text")
.largeTitle到.headline
以下是我目前正在尝试的内容(不起作用):
struct MyView: View {
@State private var fontSize: CGFloat = 100
var body: some View {
GeometryReader { geometry in
Text("Big Text - Small Text")
.font(.system(size: self.fontSize))
.onAppear {
withAnimation(Animation.linear(duration: 10)) {
// what do I do here?
}
}
}
}
}
默认情况下,字体大小不可设置动画。下面的解决方案基于自定义可设置动画的修改器 使用Xcode 12/iOS 14进行测试
struct AnimatingFontSize: AnimatableModifier {
var fontSize: CGFloat
var animatableData: CGFloat {
get { fontSize }
set { fontSize = newValue }
}
func body(content: Self.Content) -> some View {
content
.font(.system(size: self.fontSize))
}
}
struct DemoFontView: View {
@State private var smallFont = false
var body: some View {
Text("Big Text - Small Text")
.frame(maxWidth: .infinity)
.modifier(AnimatingFontSize(fontSize: smallFont ? 11 : 100))
.animation(Animation.linear(duration: 10), value: smallFont)
.onAppear {
smallFont = true
}
}
}