我正在使用JTCalendar创建自定义日历。我在Objective-C中使用JTcalendar创建了它。现在我想在Swift中使用它。我尝试过使用Briding-Header,但仍然显示JTCalendar文件不存在错误。
请建议。
答案 0 :(得分:7)
导入JTCalendar并实现JTCalendar委托
导入JTCalendar
class ViewController:UIViewController,JTCalendarDelegate
为CalendaManager创建插座并声明我们稍后使用的一些变量。
@IBOutlet weak var calendarMenuView: JTCalendarMenuView!
@IBOutlet weak var calendarContentView: JTHorizontalCalendarView!
@IBOutlet var calendarManager : JTCalendarManager!
var todayDate = NSDate()
var minDate = NSDate()
var maxDate = NSDate()
var dateSelected = NSDate()
在ViewDidLoad中初始化CalendarManager,给出delegete并设置menuview,contentview和setDate。
override func viewDidLoad() {
super.viewDidLoad()
calendarManager = JTCalendarManager.init()
calendarManager.delegate = self
createMinAndMaxDate()
calendarManager.menuView = calendarMenuView
calendarManager.contentView = calendarContentView
let mydate = Date()
calendarManager.setDate(mydate)
}
创建要在日历中显示的最短和最长日期的函数。
func createMinAndMaxDate(){
todayDate = NSDate()
minDate = calendarManager.dateHelper.add(to: todayDate as Date!, months: -6) as NSDate
maxDate = calendarManager.dateHelper.add(to: todayDate as Date!, months: 6) as NSDate
}
在canDisplayPageWithDate方法中设置最小和最大日期
public func calendar(_ calendar: JTCalendarManager!, canDisplayPageWith date: Date!) -> Bool {
return calendarManager.dateHelper.date(date, isEqualOrAfter: minDate as Date!, andEqualOrBefore: maxDate as Date!)
}
使用prepareDayView方法
public func calendar(_ calendar: JTCalendarManager!, prepareDayView dayView: UIView!){
// Today
let mydayview=dayView as! JTCalendarDayView
if(calendarManager.dateHelper.date(NSDate() as Date!, isTheSameDayThan: mydayview.date))
{
mydayview.circleView.isHidden = false;
mydayview.dotView.backgroundColor = UIColor.blue
mydayview.textLabel.textColor = UIColor.white
}
// Selected date
else if(String(describing: dateSelected) != "" && calendarManager.dateHelper.date(dateSelected as Date!, isTheSameDayThan: mydayview.date))
{
mydayview.circleView.isHidden = false;
mydayview.circleView.backgroundColor = UIColor.red
mydayview.dotView.backgroundColor = UIColor.white
mydayview.textLabel.textColor = UIColor.white
}
// Other month
else if(calendarManager.dateHelper.date(calendarContentView.date, isTheSameMonthThan: mydayview.date))
{
mydayview.circleView.isHidden = true;
mydayview.dotView.backgroundColor = UIColor.red
mydayview.textLabel.textColor = UIColor.black
}
// Another day of the current month
else
{
mydayview.circleView.isHidden = true;
mydayview.dotView.backgroundColor = UIColor.red
mydayview.textLabel.textColor = UIColor.lightGray
}
}
使用didTouchDayView方法在用户选择和特定日期时设置动画,如果选择该日期,则移至下一个月和上个月
public func calendar(_ calendar: JTCalendarManager!, didTouchDayView dayView: UIView!) {
let mydayview=dayView as! JTCalendarDayView
dateSelected=mydayview.date as NSDate
UIView.transition(with: mydayview, duration: 0.3, options: UIViewAnimationOptions(rawValue: 0), animations: {
mydayview.circleView.transform = CGAffineTransform.identity
self.calendarManager.reload()
}, completion: nil)
if(!calendarManager.dateHelper.date(calendarContentView.date, isTheSameMonthThan: mydayview.date)){
if(calendarContentView.date.compare(mydayview.date) == ComparisonResult.orderedAscending)
{
calendarContentView.loadNextPageWithAnimation()
}
else{
calendarContentView.loadPreviousPageWithAnimation()
}
}
}
答案 1 :(得分:3)
我刚刚使用桥接在Swift项目中配置了JTCalendar。
将JTCalendar文件夹拖放到项目中。
确保桥接路径为
$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h