测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年5月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由黄帅维护。
依赖 | |
SnapKit | ~> 3.0 |
MJRefresh | >= 0 |
iOS 学校课程视图,纯 Swift。
target 'ProjectName' do
use_frameworks!
pod 'SScheduleView'
end
在运行演示之前,在 Example
文件夹中运行 pod install
。
直接将 IB 拖到 UIView 中,设置 UIView 类为 SScheduleView,代码部分只需实现。更多详情请参见演示。
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)
}
/// 其他列宽度 与 第一列宽度 比
@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()
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文件。