MIDITimeTableView 1.0.3

MIDITimeTableView 1.0.3

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2019年7月
SPM支持 SPM

Cem Olcay维护。



MIDITimeTableView

可自定义和可编辑的时间表网格,用于以节的单位显示与 MIDI 或音频相关的数据。

示例

alt tag

要求

  • Swift 5.0+
  • iOS 9.0+

安装

pod 'MIDITimeTableView'

功能

  • 易于实现,类似于 UITableViewUICollectionView 的 Delegate/DataSource API。
  • 无限行和单元格。
  • 单元格和行头完全可自定义。您可以在它们内部显示任何 UIView。
  • 显示条形度量(可选)。
  • 显示可选的当前时间可编辑播放头。
  • 捏合以放大/缩小。(可选)。
  • 编辑单行或多行。
  • 拖动它们以改变行列或位置。
  • 从右侧边缘拖动以更改持续时间。
  • 长按任意单元格以显示可自定义的菜单。
  • 使用可自定义的限额保存历史记录,并实现撤销/重做(可选)。
  • 自定义网格,以任何样式显示条形、小节和亚小节线。(可选)。

用法

通过脚本或从故事板创建MIDITimeTableView,并实现其MIDITimeTableViewDataSourceMIDITimeTableViewDelegate方法。

需要数据对象来存储每行及其单元格数据。

var rowData: [MIDITimeTableRowData] = [
  MIDITimeTableRowData(
    cells: [
      MIDITimeTableCellData(data: "C7", position: 0, duration: 4),
      MIDITimeTableCellData(data: "Dm7", position: 4, duration: 4),
      MIDITimeTableCellData(data: "G7b5", position: 8, duration: 4),
      MIDITimeTableCellData(data: "C7", position: 12, duration: 4),
    ],
    headerCellView: HeaderCellView(title: "Chords"),
    cellView: { cellData in
      let title = cellData.data as? String ?? ""
      return CellView(title: title)
    }),
]

MIDITimeTableViewDataSource很可能与UITableViewDataSourceUICollectionViewDataSource API相同。只需提供行数据、行数、拍号,即可开始使用。

func numberOfRows(in midiTimeTableView: MIDITimeTableView) -> Int {
  return rowData.count
}

func timeSignature(of midiTimeTableView: MIDITimeTableView) -> MIDITimeTableTimeSignature {
  return MIDITimeTableTimeSignature(beats: 4, noteValue: .quarter)
}

func midiTimeTableView(_ midiTimeTableView: MIDITimeTableView, rowAt index: Int) -> MIDITimeTableRowData {
  let row = rowData[index]
  return row
}

您可以自定义度量条、网格、每个表头和数据单元格。查看示例项目。

MIDITimeTableCellView是可编辑的,您可以在网格中移动它们,调整它们持续的时间,或者长按以打开删除菜单。您还需要将其子类化以在其上呈现自己的数据。

您可以将minMeasureWidthmaxMeasureWidth设置为设置时间表的缩放级别。

文档

完整文档请见此处。

AppStore

本库用于我的应用《ChordBud》,欢迎检查。

alt tag