我想用SwiftUI制作一个视频时间轴.特别是,我希望用户能够水平拖动视频移动的时间.

为了做到这一点,我编写了以下代码:

ZStack {

  Rectangle()
    .fill(Color.black)
    .frame(height: 350)

  VStack(alignment: .leading, spacing: 5) {
     HStack(spacing: 5) {
        Button(action: {
           print("Undo")
        }) {
           Image(systemName: "arrow.turn.up.left")
             .foregroundColor(Color.gray)
             .font(.system(size: 20))
        }
        Button(action: {
           print("Add media")
        }) {
           Image(systemName: "plus")
              .foregroundColor(Color.gray)
              .font(.system(size: 20))
        }
     }
     .offset(x: 110)
     .padding(.horizontal, 10)
     .padding(.top, 10)

     HStack(spacing: 60) {
       Text("00:00").foregroundColor(Color.white)
       Text("00:02").foregroundColor(Color.white)
       Text("00:04").foregroundColor(Color.white)
       Text("00:06").foregroundColor(Color.white)
      }
     .offset(x: xOffset)

     Rectangle()
        .fill(Color.black)
        .frame(height: 85)

     HStack(spacing: 5) {
        Rectangle()
          .fill(Color.gray)
          .frame(width: UIScreen.main.bounds.width, height: 60)
          .cornerRadius(8)

        Rectangle()
          .fill(Color.gray)
          .frame(width: UIScreen.main.bounds.width / 2, height: 60)
          .cornerRadius(8)
      }
      .offset(x: xOffset)

      Rectangle()
         .fill(Color.black)
         .frame(height: 130)
    }
    .gesture(
       DragGesture()
         .onChanged({ value in
            xOffset = value.location.x
         })
         .onEnded({ _ in
            print(xOffset)
         })
     )
   }
}

它看起来像这样:

Demo

问题是,当您在时间线上单击并拖动时,灰色矩形会移动到光标位置.在现实中,我想要的是当你点击时间线并拖动时,你在拖动时所做的位移应该会移动灰色的矩形.例如,如果我在x=100处单击并拖动到x=90,则灰色矩形应该移动x=-10.大概是这样的:

Demo 2

推荐答案

value.location.x中的location替换为transition

然后你可以再试一次.

Ios相关问答推荐

SwiftUI中ForEach和@ State数组的可能并发问题

iOS SwiftUI需要不带箭头显示弹出窗口""

iPhone:iOS 17.4中没有气压数据

为什么Reaction-Native-Vision-Camera不能与闪光灯一起使用?

preferredCompactColumn作为NavigationSplitViewColumn.sidebar传递,但仍能在iOS上看到详细信息页面

带菜单的选取器不适用于Int32,但适用于Int

查找东南亚语言(泰语、高棉语、老挝语、缅甸语)中的单词边界

将 URLCache 子类与 URLSession 一起使用

在 Swift 中 @MainActor 似乎被 withCheckedContinuation 而不是其他异步调用继承是巧合吗?

.frame() 修饰符的位置如何影响视图?

React Native IOS base64 编码图像不显示

如何在swiftui中更改可搜索的搜索图标 colored颜色

无法为 Flutter 项目构建 ipa [CocoaPods 找不到 pod "GoogleAppMeasurement" 的兼容版本:]

@Environment 的存在会导致列表在滚动时不断重建其内容

Flutter:无法构建 iOS 应用程序ARCHIVE FAILED,为设备归档时遇到错误

如何在 UIActivityViewController 中设置邮件主题?

UIButton 事件.有什么不同?

在 iOS 8.1 模拟器上更改语言不起作用

无法加载从带有标识符的包中的笔尖引用的图像

在转发类对象中找不到属性