我想将图像放置在屏幕中央。我正在使用KingFisher库中的 KFImage来渲染和显示来自网络的图像。这些图像不会立即渲染,因此 onAppear 方法并不总是足以计算图像大小。在 VStack 中使用 2 个垫片也不起作用。并且将对齐设置为居中也不起作用。我下面的方法对于 UIImages 非常有效,但由于 onAppear 执行时可能无法渲染图像,因此有时会失败。如何使图像居中?
KFImage(URL(string: image))
.resizable()
.aspectRatio(contentMode: .fit)
.offset(x: (screenWidth() - imageWidth) / 2.0, y: (screenHeight() - imageHeight) / 2.0)
.background (
GeometryReader { proxy in
Color.clear
.onAppear {
imageHeight = proxy.size.height
imageWidth = proxy.size.width
}
.onChange(of: currentStory) { _ in
imageHeight = proxy.size.height
imageWidth = proxy.size.width
}
}
)
我认为最简单的方法就是将其放入ZStack中,无论图像大小如何,它都会始终居中。
下面的附图是VStack,包括上面的Text和ZStack。