- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我正在开发的一个应用程序中,有一个部分主要是“前进”导航——点击按钮会显示下一张幻灯片。但是,还需要辅助“向后”导航。这是我使用的方法:
import SwiftUI
struct Sample: View {
@State private var dragOffset: CGFloat = -100
var body: some View {
VStack {
Text("Perhaps a title")
ScrollView {
VStack {
Text("Some scrollable content is going to be here")
// ...
Button(action: {
// Go to the next slide
}) { Text("Next") }
}
}
Text("and, maybe, something else")
}
.overlay(
Image(systemName: "arrow.left").offset(x: dragOffset / 2),
alignment: .leading
)
.gesture(
DragGesture()
.onChanged{
self.dragOffset = $0.translation.width
}
.onEnded {
self.dragOffset = -100 // Hide the arrow
if $0.translation.width > 100 {
// Go to the previous slide
}
}
)
}
}
最佳答案
对于这种临时状态,最好使用 GestureState
因为它会在手势取消/完成后自动重置为初始状态。
所以这是可能的方法
演示:
代码:
struct Sample: View {
@GestureState private var dragOffset: CGFloat = -100
var body: some View {
VStack {
Text("Perhaps a title")
ScrollView {
VStack {
Text("Some scrollable content is going to be here")
// ...
Button(action: {
// Go to the next slide
}) { Text("Next") }
}
}
Text("and, maybe, something else")
}
.overlay(
Image(systemName: "arrow.left").offset(x: dragOffset / 2),
alignment: .leading
)
.gesture(
DragGesture()
.updating($dragOffset) { (value, gestureState, transaction) in
let delta = value.location.x - value.startLocation.x
if delta > 10 { // << some appropriate horizontal threshold here
gestureState = delta
}
}
.onEnded {
if $0.translation.width > 100 {
// Go to the previous slide
}
}
)
}
}
dragOffset: CGFloat = -100
这可能对不同的真实设备产生不同的影响,因此最好明确计算它。
关于swiftui - SwiftUI 中 DragGesture 和 ScrollView 的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60305207/
我想让一个 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
我是一名优秀的程序员,十分优秀!