SScheduleView 1.0

SScheduleView 1.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017年5月
SwiftSwift 版本3.0
SPM支持 SPM

黄帅维护。



 
依赖
SnapKit~> 3.0
MJRefresh>= 0
 

SScheduleView

iOS 学校课程视图,纯 Swift。

中文文档

特性

  • 根据课程周显示基于周的日期
  • 支持左右滑动手势
  • 动态设置周末课程显示
  • 动态更改显示课程

要求

  • iOS 8+
  • Xcode 8
  • Swift 3

安装

Swift3

target 'ProjectName' do
    use_frameworks!
    pod 'SScheduleView'
end

演示

在运行演示之前,在 Example 文件夹中运行 pod install

使用(支持 IB 和代码)

IB 使用

直接将 IB 拖到 UIView 中,设置 UIView 类为 SScheduleView,代码部分只需实现。更多详情请参见演示。

通过 SnapKit 实现代码

import SScheduleView

scheduleView = SScheduleView()
view.addSubview(scheduleView)
scheduleView { (make) in
    make.top.equalTo(self.view).offset(44)
    make.left.right.bottom.equalTo(self.view)
}
scheduleView.delegate = self

绑定显示日程数据

应用程序的数据类型应实现 SScheduleViewModelProtocol 协议。

public protocol SScheduleViewModelProtocol {
    // 周几的课 从1开始
    func getDay() -> Int
    // 第几节课 从1开始
    func getJieci() -> Int
    //一节课的持续时间
    func getSpan() -> Int
    func getCourseName() -> String
    func getClassRoom() -> String
    // 课程的自定义颜色,若nil则采用随机颜色
    func getBackColor() -> UIColor?
}

之后,调用更新数据函数显示课程数据。

var thisWeekCourse = Array<SScheduleViewModelProtocol>()
scheduleView.updateCourseView(courseDataList: thisWeekCourse)

监听玩家状态更改

更多详情请参阅示例项目。

委托

public protocol SScheduleViewDelegate:class {
    func tapCourse(courseModel:SScheduleViewModelProtocol)
    func swipeGestureRight()
    func swipeGestureLeft()
    func pullAHScheduleScrollViewStartRefreshing(_ scheduleScrollView:SScheduleScrollView)
}

自定义 SScheduleView

/// 其他列宽度 与 第一列宽度 比
@IBInspectable var sideColWidthRatio:CGFloat = 2 

/// 顶部日期栏 View 背景色
@IBInspectable var headViewBackgroundColor: UIColor = SScheduleTheme.BlankAreaColor 

/// 侧边时间栏 View 背景色
@IBInspectable var sideViewBackgroundColor: UIColor = SScheduleTheme.BlankAreaColor 

/// 设置一周显示的天数
open func setShowTotalDay(with num:CGFloat)

/// 设置显示周数
open func setShowWeek(with num:Int)

/// 设置是否显示当前周数,因为有的ViewController在NavigationBar显示当前周数
open func setWeekIsShow(with isShow:Bool)

/// 当前学期开学时间 "yyyy-MM-dd"
open func setTermStartDate(with dateString:String) 

/// 清空课表数据,可用于账户退出登录后的操作
open func clearOldCourseView() 

Peek & Pop

extension viewController:UIViewControllerPreviewingDelegate {
    public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {

        if let model = scheduleView.getDataModel(with: self.view.convert(location, to: self.scheduleView)) {
          // return previewVC
        }

        return nil
    }

    public func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
        show(viewControllerToCommit, sender: self)
    }
}

联系我

贡献者

欢迎你fork和提交pull请求。

许可证

SScheduleView可在MIT许可证下使用。更多信息请参阅LICENSE文件。