'some View' 类型的值没有成员 'baselineOffset'
Value of type 'some View' has no member 'baselineOffset'
我正在尝试构建自定义视图修改器。我的代码如下。
import SwiftUI
struct Heading: ViewModifier {
let color: Color
let size: CGFloat
let align: TextAlignment
func body(content: Content) -> some View {
content
.font(Font.custom("HunterHeartFreeFont", size: size))
.baselineOffset(-14)
.foregroundColor(color)
.multilineTextAlignment(align)
}
}
extension View {
func heading(
color: Color = .white,
size: CGFloat = 42,
align: TextAlignment = .center
) -> some View {
modifier(Heading(color: color, size: size, align: align))
}
}
我遇到错误 Value of type 'some View' has no member 'baselineOffset'
我是 Swift 和 SwiftUI 的新手,所以我不知道如何解决这个问题,也没有找到答案。我假设 baselineOffset 修饰符仅适用于文本视图,并且该修饰符应该适用于任何视图。
有没有办法让这个修改器只对文本视图起作用?或者有其他方法可以解决这个问题吗?
baselineOffset
修饰符仅适用于 Text
,但 ViewModifier
中的 content
是不透明的通用视图。
相反,您可以直接扩展 Text
,例如
extension Text {
func heading(
color: Color = .white,
size: CGFloat = 42,
align: TextAlignment = .center
) -> some View {
self.font(Font.custom("HunterHeartFreeFont", size: size))
.baselineOffset(-14)
.foregroundColor(color)
.multilineTextAlignment(align)
}
}
我正在尝试构建自定义视图修改器。我的代码如下。
import SwiftUI
struct Heading: ViewModifier {
let color: Color
let size: CGFloat
let align: TextAlignment
func body(content: Content) -> some View {
content
.font(Font.custom("HunterHeartFreeFont", size: size))
.baselineOffset(-14)
.foregroundColor(color)
.multilineTextAlignment(align)
}
}
extension View {
func heading(
color: Color = .white,
size: CGFloat = 42,
align: TextAlignment = .center
) -> some View {
modifier(Heading(color: color, size: size, align: align))
}
}
我遇到错误 Value of type 'some View' has no member 'baselineOffset'
我是 Swift 和 SwiftUI 的新手,所以我不知道如何解决这个问题,也没有找到答案。我假设 baselineOffset 修饰符仅适用于文本视图,并且该修饰符应该适用于任何视图。
有没有办法让这个修改器只对文本视图起作用?或者有其他方法可以解决这个问题吗?
baselineOffset
修饰符仅适用于 Text
,但 ViewModifier
中的 content
是不透明的通用视图。
相反,您可以直接扩展 Text
,例如
extension Text {
func heading(
color: Color = .white,
size: CGFloat = 42,
align: TextAlignment = .center
) -> some View {
self.font(Font.custom("HunterHeartFreeFont", size: size))
.baselineOffset(-14)
.foregroundColor(color)
.multilineTextAlignment(align)
}
}