NavigationButton 中嵌入的自动调整图像大小的问题。它变成蓝色
Problem with self sizing Image embedded in NavigationButton. It turns blue
我有一个奇怪的问题,如果我制作的可调整大小的图像(自定义视图)不在 NavigationButton 中,那么它可以正常工作,但如果它在其中,那么图像的大小仍然很好,但是它变成全蓝色。有谁知道哪里出了问题吗?
struct DynamicallyResizableImage: View {
let imageName: String
let height: CGFloat
let width: CGFloat
init(imageName: String, height: CGFloat? = nil, width: CGFloat? = nil) {
self.imageName = imageName
let imageSize = UIImage(named: imageName)!.size
guard let height = height else {
if let width = width {
self.width = width
self.height = imageSize.height * (width/imageSize.width)
return
}
self.height = 0
self.width = 0
return
}
if let width = width {
self.height = height
self.width = width
return
}
self.height = height
self.width = imageSize.width * (height/imageSize.height)
}
var body: some View {
Image(imageName)
.resizable()
.frame(width: width, height: height)
}
}
NavigationButton(destination: PicturePreviewView(imageName: "IMG_4955")) {
DynamicallyResizableImage(imageName: "IMG_4955", height: 200)
}
未嵌入 NavigationButton 时,一切正常。当嵌入 NavigationButton 时,图像会变成蓝色。
有人知道怎么解决吗?谢谢!!!
所以我在一位 redditor 的帮助下修复了它。在自定义视图内部,我不得不像这样向图像添加渲染模式:
Image(imageName)
.renderingMode(.original)
.resizable()
.frame(width: width, height: height)
我有一个奇怪的问题,如果我制作的可调整大小的图像(自定义视图)不在 NavigationButton 中,那么它可以正常工作,但如果它在其中,那么图像的大小仍然很好,但是它变成全蓝色。有谁知道哪里出了问题吗?
struct DynamicallyResizableImage: View {
let imageName: String
let height: CGFloat
let width: CGFloat
init(imageName: String, height: CGFloat? = nil, width: CGFloat? = nil) {
self.imageName = imageName
let imageSize = UIImage(named: imageName)!.size
guard let height = height else {
if let width = width {
self.width = width
self.height = imageSize.height * (width/imageSize.width)
return
}
self.height = 0
self.width = 0
return
}
if let width = width {
self.height = height
self.width = width
return
}
self.height = height
self.width = imageSize.width * (height/imageSize.height)
}
var body: some View {
Image(imageName)
.resizable()
.frame(width: width, height: height)
}
}
NavigationButton(destination: PicturePreviewView(imageName: "IMG_4955")) {
DynamicallyResizableImage(imageName: "IMG_4955", height: 200)
}
未嵌入 NavigationButton 时,一切正常。当嵌入 NavigationButton 时,图像会变成蓝色。
有人知道怎么解决吗?谢谢!!!
所以我在一位 redditor 的帮助下修复了它。在自定义视图内部,我不得不像这样向图像添加渲染模式:
Image(imageName)
.renderingMode(.original)
.resizable()
.frame(width: width, height: height)