I am creating the custom calendar using JTCalendar. I have created it using JTcalendar in Objective-C. Now I want to use same in Swift. I have tried using Briding-Header but still it shows JTCalendar file does not exist error.
Please suggest.
I am creating the custom calendar using JTCalendar. I have created it using JTcalendar in Objective-C. Now I want to use same in Swift. I have tried using Briding-Header but still it shows JTCalendar file does not exist error.
Please suggest.
Import JTCalendar and implement JTCalendar delegate
import JTCalendar
class ViewController: UIViewController , JTCalendarDelegate
Create outlet for CalendaManager and declare some variable which we used later.
@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()
In ViewDidLoad initialize CalendarManager , give delegete and set menuview , contentview and setDate.
override func viewDidLoad() {
super.viewDidLoad()
calendarManager = JTCalendarManager.init()
calendarManager.delegate = self
self.createMinAndMaxDate()
calendarManager.menuView = calendarMenuView
calendarManager.contentView = calendarContentView
let mydate = Date()
calendarManager.setDate(mydate)
}
Create Function for minimum and maximum date which you want to display in calendar.
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
}
In canDisplayPageWithDate method set minimim and maximum date
public func calendar(_ calendar: JTCalendarManager!, canDisplayPageWith date: Date!) -> Bool {
return calendarManager.dateHelper.date(date, isEqualOrAfter: minDate as Date!, andEqualOrBefore: maxDate as Date!)
}
Use prepareDayView method
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
}
}
Use didTouchDayView method for animating when user select and perticular date and move to next and previous month if that date is selected
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()
}
}
}
I have just configured JTCalendar in Swift project using bridging.
Drag and drop JTCalendar folder in your project.
Make sure bridging path is
$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h