范围滑块的触摸(框)video修剪器“关闭”

我正在使用FDTake (pod不会对这个问题太重要但仍然是)从照片中选择video中的video。 但是,我还希望能够编辑video并将其长度限制为大约12秒。 为此,我查看了pod的代码并将第271行更改为self.imagePicker.allowsEditing = true ,这已经导致我到目前为止无法解决的问题:左滑块的触摸(框)是“关闭” 。 由于这是一个相当含糊的描述我上传了一个video,你可以在这里找到它。

不幸的是,我完全不知道是什么引起了这个问题,我真的很感激一些帮助。 我问FDTake的创建者,但显然他认为Apple需要解决这个问题(因为你将能够看到最近的一个封闭问题)。

有人可以解释我如何解决这个问题以及导致它的原因吗?

一种可能的解决方案:选择video,然后使用PryntTrimmerView修剪video

您可以使用PryntTrimmerView库来修剪video。 我在一个示例项目中实现了这个库。 您可以从我的github repo下载正在运行的示例项目

加载随机video按钮从设备的存储中加载随机video(照片)。 因此,至少需要存在一个video文件

Avplayer正用于显示video

这是完整的video

完整的视频

使用黑色手柄根据需要修剪video

修剪video

修剪视频


注意::使用私有属性在PryntTrimmerView.swift文件中指定句柄之间的最小允许距离。

 /// The minimum duration allowed for the trimming. The handles won't pan further if the minimum duration is attained. public var minDuration: Double = 2 

并且此函数使用此属性以及video持续时间和帧来计算最小距离bw句柄

 private var minimumDistanceBetweenHandle: CGFloat { guard let asset = asset else { return 0 } let distance = CGFloat(minDuration) * assetPreview.contentView.frame.width / CGFloat(asset.duration.seconds) print("minimum distance: \(distance)") return distance } 

如果您遇到任何问题或需要更多信息,请告诉我

谢谢

我直接使用UIImagePickerController重现了这个问题。

以下是一些可以从viewController调用的代码:

  let picker = UIImagePickerController() picker.allowsEditing = true picker.mediaTypes = [String(kUTTypeMovie)] picker.videoMaximumDuration = 12.0 present(picker, animated: true, completion: nil) 

我的猜测是,只有在屏幕左侧有一个内部视图的手势冲突,一旦你将左手柄拉到中间的某个位置,你可以直接访问它。

此外,这似乎不是新的: IOS 11 UIImagepickervideo如何将滑块移动到底部?

你可以做的最好的事情是向Apple提交雷达。

在此期间,您可以使用Awais Fayyaz建议的库作为解决方法。 (免责声明:我是图书馆的作者,所以我当然有偏见)。 另一种选择是在用户选择video后使用UIVideoEditorController ,该组件在iOS 11上没有任何问题。