我试图完成一些看起来很简单的事情:Image
为了方便起见,我在SwiftUI中有一个自定义子类,我想在我的应用程序中使用它。我的最终目标是OnboardingThumbnailImage
在其他视图中使用,并简单地将图像名称传递给构造函数。
import SwiftUI
struct OnboardingThumbnailImage: View {
var imageName: String
var body: some View {
Image(imageName)
.resizable()
.scaledToFit()
.frame(width: 50, height: 50)
.foregroundColor(Colors.tintColor)
}
}
struct OnboardingThumbnailImage_Previews: PreviewProvider {
static var previews: some View {
OnboardingThumbnailImage(imageName: "?????")
}
}
我该怎么做?编译器要求我在内部指定一个值,OnboardingThumbnailImage_Previews
因此我一无所知。我已经研究了绑定,但是视图之间不需要“双向路”,所以我不确定。
我是否可以为了保留Image()
默认Image
构造函数而只保留不带任何参数的方法?如果我离开,Image()
则会收到错误消息:无法为无参数的类型'Image'调用初始化程序。
这是SwiftUI询问您的方式
View
预览时要显示什么图像?
您只能在macOS Catalina上预览SwiftUI视图,因此,如果您不使用Catalina(像我一样),则此功能与您不太相关。
您应该将要查看的图像放在预览中????
。如果您不使用Catalina,或者只是不想预览它,则可以删除整个OnboardingThumbnailImage_Previews
结构。
还要注意,您不能在SwiftUI中“子类化”另一个视图。您所能做的就是composition,这就是您在这里所做的。SwiftUI的设计偏向于继承而非继承。你可以找到这个概念的解释在这些页面:1,2。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句