我为 SwiftUI Font 编写了一个扩展,它引入了一些自定义字体。
extension Font {
static let solDisplay: Font = .custom("Gilroy", size: 36)
static let solHeadline: Font = .custom("Gilroy", size: 24)
}
现在由于某种原因,在构建过程中出现以下错误:
Cannot infer contextual base in reference to member 'heavy'
。
有趣的是,这个错误是其他人在执行拉取请求时发现的 - 我在本地没有注意到任何这些错误,但它似乎只发生在某些错误上。目前我们团队中四分之二的人有其他人没有的错误。
struct AssetsDemoPage: View {
let fonts: [(String, Font)] = [
("Display - Heavy", .solDisplay.weight(.heavy)), // Error Happening here
("Display - Light", .solDisplay), // No error here!
("Headline - Heavy", .solHeadline.weight(.heavy)), // Error Happening here
("Headline - Light", .solHeadline), // No error here!
]
var body: some View {
NavigationView {
List {
Section(header: Text("Fonts")) {
ForEach(fonts, id: \.0) { name, font in
Text(name)
.font(font)
}
}
}
.navigationBarTitle(Text("Assets"), displayMode: .inline)
}
}
}
正如 @jnpdx 所指的 Xcode 版本,Swift 版本可能不一样。在 Swift 5.4 中,实现了SE-0287。
该提案允许隐式成员链。您可以阅读有关链接提案的更多信息,但这总结得很好:
该提案建议将隐式成员语法扩展到更复杂的表达式,而不仅仅是单个静态成员或函数。具体来说,隐式成员语法将被允许覆盖成员引用链。
诸如
Color.red.opacity(0.5)
之类的代码现在可以简化为.red.opacity(0.5)
,类似于您的示例。
使用 Swift 5.4 需要 Xcode 12.5,因此请告知团队进行升级。
我最终做的是这样的。我想要一个绿点,如果程序遇到任何错误,它就会变成红色。
我声明了我的变量
@State public var errorDot = Color.green
然后在我放入的每个 catch 函数中
errorDot = Color.red
这就是我创建的用来改变颜色的“点”:
Circle()
.fill(errorDot)
.padding(.trailing, -5.0)
.frame(width: 10.0, height: 10.0)
//Debug light