🎞 HKVideoRangeSlider
iOS 视频范围滑块,用于剪辑,支持多轨道。
💘 特性
- 可滚动缩略图
- 支持 多 个视频轨道
- 包含位置指示器
- 支持纵向和横向排列,以及设备旋转
- 自定义外观
🗒 要求
HKVideoRangeSlider 使用 Swift 5 编写,兼容 iOS 11.0 以上的操作系统。
📥 安装
HKVideoRangeSlider 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中即可。
pod 'HKVideoRangeSlider'
Carthage
对于 Carthage,请将以下内容添加到您的 Cartfile 中
github "hirohitokato/HKVideoRangeSlider"
🚀 入门
// Instantiate an object.
// (If you use a storyboard, locate UIView and change the class to HKVideoRangeSlider)
videoRangeSlider = HKVideoRangeSlider(frame: someRect)
view.addSubview(videoRangeSlider)
// Set delegate object to receive events from slider.
videoRangeSlider.delegate = self
// Prepare AVAsset objects to show.
let url1 = URL(fileURLWithPath: Bundle.main.path(forResource: "video1", ofType:"mp4")!)
let url2 = URL(fileURLWithPath: Bundle.main.path(forResource: "video2", ofType:"mp4")!)
let url3 = URL(fileURLWithPath: Bundle.main.path(forResource: "video3", ofType:"mp4")!)
// Construct tracks information by using HKAssetInputData.
let assets = [
HKAssetInputData(asset: AVURLAsset(url: url1)),
HKAssetInputData(asset: AVURLAsset(url: url2)),
HKAssetInputData(asset: AVURLAsset(url: url3), startTime: 20, duration: 18) // you can set initial range.
]
// Set & display video range view
videoRangeSlider.setAssetData(assets)
🤲 用法
🖼 放置 HKVideoRangeSlider
通过Storyboard(或Xib)
- 将
UIView
放入视图中。 - 将类从
UIView
更改为HKVideoRangeSlider
。 - 自定义其外观。
- 将出口连接到其视图控制器。
通过代码
let videoRangeSlider = HKVideoRangeSlider(frame: targetFrame)
self.addSubview(videoRangeSlider)
🎞 显示轨迹与其他控制
要显示视频轨迹,只需使用带有 HKAssetInputData
数组的 setAssetData(_:)
方法设置轨迹信息。
// Create an array of contents.
let assets = [
HKAssetInputData(asset: AVURLAsset(url: videoUrl1)),
HKAssetInputData(asset: AVURLAsset(url: videoUrl2)),
// you can set initial range settings.
HKAssetInputData(asset: AVURLAsset(url: videoUrl3), startTime: 20, duration: 18)
]
// Display video range view
videoRangeSlider.setAssetData(assets)
您还可以如下强制重新绘制轨迹。
videoRangeSlider.updateThumbnails()
要删除资产,请将空资产设置为范围滑块。滑块清除所有内容并隐藏所有界面。
// To clear the contents, just set empty assets to range slider.
videoRangeSlider.setAssetData([])
🎮 控制 HKVideoRangeSlider
🕹 主滑块
要设置整个内容的滚动位置,请使用 0.0 - 1.0 的 mainSliderValue
属性。
// Scroll to the center.
videoRangeSlider.mainSliderValue = 0.5
🕹 进度指示器
要设置进度指示器的当前位置,请使用带 0.0 - 1.0 的 setProgress(rate:animated:)
方法。
// Reset the progress.
videoRangeSlider.setProgress(rate: 0.0, animated: true)
🔌 接收事件
要接收事件,将委托对象设置到 delegate
属性。该对象必须实现 HKVideoRangeSliderDelegate
协议。
videoRangeSlider.delegate = self
⚡️ 范围状态已更改
func didChangeRangeData(rangeSlider: HKVideoRangeSlider, ranges: [HKVideoRange])
告诉委托者当用户滚动其中一个轨迹或拖动起始或结束滑块时的情况。这是可选的。
参数如下
名称 | 描述 |
---|---|
范围滑块 |
事件发生的滑块对象。 |
范围 |
所有轨迹的当前范围状态的数组。 |
委托者通常实现此方法以获取范围数据的变化。
⚡️ 指示器位置已更改
func didChangeIndicatorPosition(rangeSlider: HKVideoRangeSlider, positions: [HKVideoPosition], rate: Double)
告诉委托者当用户拖动进度指示器时的情况。这是可选的。
参数如下
名称 | 描述 |
---|---|
范围滑块 |
事件发生的滑块对象。 |
位置 |
所有轨迹的当前位置的数组,由进度指示器指示。 |
比率 |
将0.0到1.0的值作为进度指示器的位置。 |
🛠 自定义
🏃♀️ 行为
▶ 最大/最小范围(秒)
要限制范围,请使用maxDuration
和minDuration
属性。
// Limit the range to 10 - 180 seconds.
videoRangeSlider.maxDuration = 180.0
videoRangeSlider.minDuration = 10
默认值为3600和2(秒)。
🎨 外观
▶ 更改起始/结束指示器和滚动旋钮的颜色
使用tintColor
和startEndSliderDimpleColor
属性。
videoRangeSlider.tintColor = .systemYellow
videoRangeSlider.startEndSliderDimpleColor = .darkGray
▶ 使用原图作为滑块。
使用startEndSliderImage
属性。
videoRangeSlider.startEndSliderImage = UIImage(named: "mySlider")
如果设置为nil
,HKVideoRangeSlider将使用默认图片。
HKVideoRangeSlider使用最右侧/最左侧作为标记起始和结束位置的位置。
此外,您可以通过使用isStartEndBorderHidden
属性来显示/隐藏起始/结束滑块之间的边框。
// Hide borders between start / end slider
videoRangeSlider.isStartEndBorderHidden = true
💪 贡献
欢迎在GitHub上报告错误和发起拉取请求,链接为https://github.com/hirohitokato/HKVideoRangeSlider。
🖋 作者
カトウ ヒロヒト,twitter accountはhkato193。
📜 许可证
HKVideoRangeSliderはMITライセンスで利用可能です。詳細はLICENSEファイルを参照してください。