【发布时间】:2023-04-05 02:03:02
【问题描述】:
我有一个 ZStack,其中显示了一个图像。 在某些情况下需要对图像进行缩放。
我无法对齐 ZStack 底部的缩放图像,它总是显示在中间。
我尝试将 ZStack(alignment: .bottom) 与图像的 .alignmentGuide(.bottom) 结合使用,但这不会改变结果。
同时在图像周围放置一个 VStack 并在其上方放置一个 Spacer() 不会改变结果。
HStack 不相关,仅显示,因为我需要在此构造中使用 ZStack。但主要问题在于 VStack,它在 ZStack 的空间中缩放后不会移动。
似乎 .scaleEffect 只是使用原始图像的位置和框架,并将缩放后的图像放在中间。这是 scaleEffect 的限制吗?还有什么功能可以用?
这是我的视图(精简代码)://我将背景着色为紫色,以显示 ZStack 的完整大小
var body: some View {
ZStack(alignment: .bottom) {
Color.purple
Image(battlingIndividual.getMonster().getStatusImageName(battlingIndividual.status))
.resizable()
.scaledToFill()
.scaleEffect(battlingIndividual.getMonster().size.scaleValue)
HStack() {
SkillViews(battlingIndividual: battlingIndividual)
Spacer()
}
}
}
结果是这样的:
编辑:我为图像添加了背景,以显示图像在 ZStack 中居中。
解决方案: 在这种情况下,我们不需要对齐,我们需要一个锚:
.scaleEffect(battlingIndividual.getMonster().size.scaleValue, anchor: .bottom)
【问题讨论】:
标签: swiftui scale vertical-alignment image-scaling zstack