Quero posicionar uma imagem no centro da tela. Estou usando o KFImage, da biblioteca KingFisher, para renderizar e exibir imagens da web. Essas imagens não são renderizadas instantaneamente, portanto o método onAppear nem sempre é suficiente para calcular o tamanho da imagem. Usar 2 espaçadores em um VStack também não funciona. E definir o alinhamento para centralizar também não funciona. Meu método abaixo funciona muito bem para UIImages, mas devido ao fato de a imagem poder não ser renderizada quando o onAppear é executado, às vezes ele falha. Como posso centralizar a imagem?
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
}
}
)
Acho que a maneira mais simples é colocar no ZStack, ele sempre estará centralizado, não importa o tamanho da imagem.
As imagens anexadas abaixo são VStack incluindo Text e ZStack acima.