Swiftパッケージ · v0.1.0

KLCalendarLanes

カレンダーグリッドの複数日にまたがる終日イベントバーへ決定的にレーンを割り当てます。

KLCalendarLanesはUIに依存しないカレンダーグリッド用のレイアウトエンジンです。渡された `Calendar` で日付を正規化し、行の境界でバーを分割して、レーン、オーバーフロー、日ごとの占有状況を返します。

対応OS
iOS 17+ · macOS 14+
開発環境
Swift 6.0+
ライセンス
MIT
外部依存
なし

できること

  • `Calendar` に基づく複数日範囲の正規化
  • 行の境界で先頭・末尾の情報を持つセグメントを生成
  • 決定的なレーン割り当てとオーバーフローの記録
  • 範囲イベントが占有するレーン数を日ごとに取得

このパッケージがしないこと

このパッケージは範囲バーのジオメトリだけを割り当てます。タイトル、色、単日イベントの行、ビュー、ホストのイベントモデルは利用側のアプリが担当します。

SwiftPMで追加

Package.swiftSwift
.package(url: "https://github.com/KoenLee1023/KLCalendarLanes.git", from: "0.1.0")

使い方

最小構成Swift
let layout = KLCalendarLaneEngine().layout(
    events: events,
    in: week,
    configuration: .init(calendar: calendar, maximumLaneCount: 2)
)
let segments = layout.segments(startingOn: day)
KLCalendarLaneEngine

表示する半開区間のグリッドに対して `KLCalendarLaneLayout` を計算します。

KLCalendarLaneConfiguration

`Calendar`、1行の列数、レーン上限、終了境界の意味を定義します。

KLCalendarLaneLayout

行内セグメント、決定的なオーバーフローID、日ごとの問い合わせを提供します。

デモアプリ

MonthLane

`Calendar` に基づく複数日範囲の正規化 · 行の境界で先頭・末尾の情報を持つセグメントを生成

LaneStressLab

決定的なレーン割り当てとオーバーフローの記録 · 範囲イベントが占有するレーン数を日ごとに取得