- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使警报 View 的按钮适合父 VStack。但我只能看到两个选项:
我真正想要的是,VStack 保持其宽度,而按钮刚好填满边缘。没有扩展 VStack。 VStack 的大小由标题和消息定义,而不是由按钮定义。这可以用 SwiftUI 实现吗?
代码:
Color.white
.overlay(
ZStack {
Color.black.opacity(0.4)
.edgesIgnoringSafeArea(.all)
VStack(spacing: 15) {
Text("Alert View")
.font(.headline)
Text("This is just a message in an alert")
Button("Okay", action: {})
.padding()
.frame(maxWidth: .infinity)
.background(Color.yellow)
}
.padding()
.background(Color.white)
}
)
最佳答案
正如评论中提到的,如果您希望宽度与消息大小相关联,则必须使用 PreferenceKey
将值向上传递到 View 层次结构中:
struct ContentView: View {
@State private var messageWidth: CGFloat = 0
var body: some View {
Color.white
.overlay(
ZStack {
Color.black.opacity(0.4)
.edgesIgnoringSafeArea(.all)
VStack(spacing: 15) {
Text("Alert View")
.font(.headline)
Text("This is just a message in an alert")
.background(GeometryReader {
Color.clear.preference(key: MessageWidthPreferenceKey.self,
value: $0.frame(in: .local).size.width)
})
Button("Okay", action: {})
.padding()
.frame(width: messageWidth)
.background(Color.yellow)
}
.padding()
.background(Color.white)
}
.onPreferenceChange(MessageWidthPreferenceKey.self) { pref in
self.messageWidth = pref
}
)
}
struct MessageWidthPreferenceKey : PreferenceKey {
static var defaultValue: CGFloat { 0 }
static func reduce(value: inout Value, nextValue: () -> Value) {
value = value + nextValue()
}
}
}
我敢打赌,在某些情况下,您还想设置最小宽度(例如,如果警报消息是一个字长),因此实际应用程序可能会使用 max(minValue , messageWidth)
或类似的东西来解释短消息。
关于swift - VStack 子级填充(而不是扩展)其父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67487873/
我有 SwiftUI 的问题。当我使用多个 VStack s 在另一个 VStack ,我在文本截断方面遇到了奇怪的问题。 这是最小的可重现示例: “B”标签被截断,但它不应该被截断。如果我通过添加或
我正在尝试构建一个包含多个 VStack(元素)的 VStack(容器),每个 VStack 都有一个标题和一个文本。元素 VStack 应该均匀分布,并且之间有间隔。 由于某种原因,它最多只能工作
有人可以告诉我这条 ffmpeg 行有什么问题吗?我收到错误: 输入 1 宽度 619 与输入 0 宽度 618 不匹配。 无法在 Parsed_vstack_3 上配置输出焊盘 重新初始化过滤器时出
我最近一直在 SwiftUI 中构建一个应用程序,今天我注意到 VStack Alignment 有一些奇怪的行为。无论我使用什么对齐方式, View 都不会在中心之外对齐。见下文: VStack(a
我想将 VStack 的内容左对齐而不是居中,但我不知道该怎么做。这是我的代码: struct SortRow: View { var sortType: SortType @AppS
我想将 VStack 的内容左对齐而不是居中,但我不知道该怎么做。这是我的代码: struct SortRow: View { var sortType: SortType @AppS
我从一个干净的项目开始,在 VStack 中添加了 5 个按钮和 5 个垫片,一切都很好。当我在底部添加第 6 个间隔时,代码突然无法编译并出现错误:“对成员'buildBlock()'的不明确引用”
这个问题已经有答案了: 奥 git _a (1 个回答) 已关闭 4 年前。 我想从 numpy 数组列表中创建一个 numpy 数组。假设我们有三个数组 a 、 b 、 c(嗯,实际上我的代码列表中
我在使用 SwiftUI 创建一些 View 时遇到了 VStack 框架尺寸的奇怪错误。渐变不会填满屏幕的所有高度。那只是 Xcode 错误还是我做错了什么? struct WelcomeView
尽管在预览版中 VStack 看起来很有希望,但当我在模拟器或手机上运行该应用程序时,它似乎低于预期。通过比较两个图像,您可以看到在 View 的前部有很大的差距。我还添加了层的图像以帮助您理解问题。
我正在尝试构建一个简单的视频编辑器,并在后台使用 ffmpeg。我想在一个命令中使用尽可能多的不同过滤器/属性,但我没有成功地将静止图像放在其他所有内容之前(第一帧)。在视频中显示图像后,我想要一个
我想堆叠 4 个视频,如下面的代码和 添加循环 例如,对于较短的 top_left.mp4。 我找不到添加循环选项而不会出错的方法。 请问你能帮帮我吗? ffmpeg -i top_left.mp4
我有一个卡片 View 。我给自己的尺寸。我知道这是错误的。我想调整大小并除以百分比,如 blue = 70% & red = 30%或类似的东西。但不知道怎么做。我是新来的 SwiftUI .下面是
我是 SwiftUI 的新手,这次我尝试将单个元素(图像)向右对齐,然后其余内容应居中对齐。 就像使用 Spacer() 时发生的情况一样在 HStack 上但到另一边。 我读到了 .alignmen
我正在编写一个函数来从图像中读取像素数据并将它们存储在 numpy 数组中,以进一步进行训练/测试分割。 当我运行此代码时,它会抛出一个异常,表示除串联轴之外的所有输入数组维度都必须完全匹配。 我不确
我有一个简单的 View ,其中包含一个VStack,其中一行文本包含列表标题(认为标题),后跟一个List。 struct CampaignView : View { let campaign:
我在将 numpy vstack 用于指数为 e-5 的浮点值时遇到问题。 item_array 和 date_array 都是 numpy.ndarray。 当我使用 data = np.vstac
我正在监视串行端口并尝试在数据到达时在 Matplotlib 中绘制数据。因为数据以不规则的间隔到达,所以我使用一种方法来附加数据 - 类似于 this thread . 这是我的代码: data =
我有 vstacked 图像数据,现在我希望将其拆分为训练集和测试集。但是如何初始化一个空的 numpy 数组以便我可以开始 vstacking? 我的简化代码如下所示: #k-fold the da
若干个数组可以沿不同的轴合合并到一起,vstack,hstack的简单用法, ?
我是一名优秀的程序员,十分优秀!