swiftui - SwiftUI:在 SwiftUI 中使用 Spacer 垂直对齐动态大小的 Rectangle
问题描述
SwiftUI 中似乎存在潜在的错误。我正在尝试在图像顶部放置一个不透明度为 0.5 的矩形。
当我尝试将透明矩形固定在顶部时,从 100px 宽度开始,它会下降而不是粘在顶部。
这是代码:
ZStack {
VStack {
Image("movistar")
.resizable(capInsets: EdgeInsets(), resizingMode: .stretch)
.scaledToFit()
.cornerRadius(8)
.padding(15)
.frame(minWidth: Global.SCREEN_WIDTH)
}
VStack {
HStack {
Rectangle()
.fill(Color(red: 0, green: 0, blue: 0, opacity: 0.5))
.frame(width: 110, height: Global.SCREEN_WIDTH / 4)
}
Spacer()
}
.scaledToFit()
.cornerRadius(8)
.padding(15)
.frame(width: Global.SCREEN_WIDTH, height: Global.SCREEN_WIDTH)
解决方案
这里没有错误。如果您将 .background 添加到所有图层,您将看到由于您设置视图的方式(即 Spacer、scaledToFit 等),视图的实际框架不一定是图像的边缘。您还没有设置任何堆栈或框架的对齐方式。
有很多方法可以做你想做的事,但我相信这是最简单的:
var body: some View {
Image("movistar")
.resizable(capInsets: EdgeInsets(), resizingMode: .stretch)
.scaledToFit()
.cornerRadius(8)
.frame(minWidth: UIScreen.main.bounds.width)
.overlay(
Rectangle()
.fill(Color(red: 0, green: 0, blue: 0, opacity: 0.5))
.frame(width: 110, height: UIScreen.main.bounds.width / 4)
, alignment: .top
)
}
推荐阅读
- office-js - 在加载项命令中使用 imageMSO 图标
- objective-c - 如何通过 NSTask/Process 执行 `aerender` 命令行工具?
- java - 比较和排序字符串 Java
- dart - 多次将表单数据添加到列表中
- python-3.x - 将 JPG、PNG 等格式转换为 PGM 并制作数组:Python
- apache-kafka - 如何设置消费者的最大重试次数
- c++ - 如何正确实现询问用户是否要重新执行代码的循环?
- django - 在 Django All Auth 中使用多个登录字段、电子邮件或电话号码
- flutter - 使用热重载时简单的字符串标题不更新
- mapstruct - Mapstruct 构造函数注入(弹簧)