- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望 SwiftUI DragGesture 仅在手势处于特定方向(水平/垂直)时启动。是否可以?
最佳答案
是的,它是通过将手势平移的两个组件(水平或垂直)之一应用于 View 偏移。
这是作为 ViewModifier
实现的这种行为.
struct DraggableModifier : ViewModifier {
enum Direction {
case vertical
case horizontal
}
let direction: Direction
@State private var draggedOffset: CGSize = .zero
func body(content: Content) -> some View {
content
.offset(
CGSize(width: direction == .vertical ? 0 : draggedOffset.width,
height: direction == .horizontal ? 0 : draggedOffset.height)
)
.gesture(
DragGesture()
.onChanged { value in
self.draggedOffset = value.translation
}
.onEnded { value in
self.draggedOffset = .zero
}
)
}
}
struct ContentView: View {
var body: some View {
VStack {
Spacer(minLength: 100)
HStack {
Rectangle()
.foregroundColor(.green)
.frame(width: 100, height: 100)
.modifier(DraggableModifier(direction: .vertical))
Text("Vertical")
}
Spacer(minLength: 100)
Rectangle()
.foregroundColor(.red)
.frame(width: 100, height: 100)
.modifier(DraggableModifier(direction: .horizontal))
Text(verbatim: "Horizontal")
Spacer(minLength: 100)
}
}
}
关于SwiftUI DragGesture 仅在一个方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58237325/
我想让一个 View “可滑动”,但是这个 View 只覆盖了整个屏幕的一小部分。正在做: var body: some View { ZStack { Text("A
如果我有一个打开工作表的按钮: Button(action: { show = true }, label: { Text("Open" }) .sheet(isPresent
我希望 SwiftUI DragGesture 仅在手势处于特定方向(水平/垂直)时启动。是否可以? 最佳答案 是的,它是通过将手势平移的两个组件(水平或垂直)之一应用于 View 偏移。 这是作为
我正在制作用户用他们自己的内容填写的可滑动闪存卡。该卡片包含一个垂直 ScrollView(用于文本)和水平 ScrollView(用于标签)。该卡还附加了一个拖动手势。但是,当我滚动 ScrollV
我想提取 DragGesture 的速度以用于 Spring 动画的initialVelocity 参数。我正在尝试创建一个可移动的卡片,它具有像 Apple map 应用程序中那样的响应式 Spri
我正在使用 SwiftUI 做一个基于 map 的应用程序,我需要通过向上/向下拖动来更改模态卡片的高度(这是 map 信息所在的 View ),就像在 Apple Maps 中一样。 这是我尝试与之
所以我有一个添加了 DragGesture 的 Rectangle,并且想要跟踪手势的开始、更改和结束。问题是当我在执行手势时将另一根手指放在 Rectangle 上时,第一个手势停止调用 onCha
在 UIKit 中,这可以通过如下代码完成: if button.frame.contains(sender.location(in: rightStackView)) { ... } 但在 Swif
我是 Jetpack Compose 的新手,我非常喜欢它。但是遇到了一个问题:我想知道我的 View 是向上滑动还是向下滑动,所以我创建了一个 LazyColumn,其中包含一些项目以便能够滚动某些
在我正在开发的一个应用程序中,有一个部分主要是“前进”导航——点击按钮会显示下一张幻灯片。但是,还需要辅助“向后”导航。这是我使用的方法: import SwiftUI struct Sample:
我正在构建一个自定义模态,当我拖动模态时,任何附加了动画的 subview 都会在我拖动时进行动画处理。我该如何阻止这种情况发生? 我想过传递一个 @EnvironmentObject与 isDrag
这是一个非常简单的例子来展示我尝试做的事情。红色圆圈可以拖动,松开后会回到原来的位置,如第一张图所示。当在拖动过程中拉起 iPad Dock 然后 DragGesture 的 .onEnded 时会出
我有一个Star()形状数组。我可以通过点击按钮在屏幕上添加新的形状。如果我只有一个形状,我可以用手势拖动这个形状。但如果我有两个或多个形状,我只能同时拖动所有形状,而不是每个形状与其他形状分开。。如
我有一个Star()形状数组。我可以通过点击按钮在屏幕上添加新的形状。如果我只有一个形状,我可以用手势拖动这个形状。但如果我有两个或多个形状,我只能同时拖动所有形状,而不是每个形状与其他形状分开。。如
我有一个Star()形状数组。我可以通过点击按钮在屏幕上添加新的形状。如果我只有一个形状,我可以用手势拖动这个形状。但如果我有两个或多个形状,我只能同时拖动所有形状,而不是每个形状与其他形状分开。。如
我有一个Star()形状数组。我可以通过点击按钮在屏幕上添加新的形状。如果我只有一个形状,我可以用手势拖动这个形状。但如果我有两个或多个形状,我只能同时拖动所有形状,而不是每个形状与其他形状分开。。如
我有以下问题。 我有一个 View在 ScrollView 内我想拖动。 现在,一切正常,拖动和滚动也发生了。但是一旦我尝试两者都做,dragOffset似乎停留,而不是重置到其初始位置。 更是如此,
我在 View 中创建了一个 DragGesture,无论用户向左还是向右滑动,它都应该选择 @State(Bool)。 问题是只检测到向右滑动。 如何使用.gesture()来捕获用户在屏幕上向左还
我想在 DragGesture 的预测位置放置一个 View ,这就是我在 .gestureEnded 闭包中所做的,将更改包装在 withAnimation 中 block 。然而,当我在实时 Vi
我是一名优秀的程序员,十分优秀!