簡體   English   中英

如何在 Swift 中使用 JTCalendar?

[英]How to use JTCalendar in Swift?

我正在使用 JTCalendar 創建自定義日歷。 我在 Objective-C 中使用 JTcalendar 創建了它。 現在我想在 Swift 中使用相同的。 我試過使用 Briding-Header 但它仍然顯示 JTCalendar 文件不存在錯誤。

請建議。

  • 在 podfile 中寫入 pod 'JTCalendar', '~> 2.0' 並安裝 pod。
  • 創建一個具有自定義類 JTCalendarMenuView 的視圖,並將引用出口作為 calendarMenuView
  • 創建另一個具有自定義類 JTHorizo​​ntalCalendarView 的視圖,並將引用出口作為 calendarContentView
  • 導入 JTCalendar 並實現 JTCalendar 委托

    導入 JTCalendar
    類 ViewController: UIViewController , JTCalendarDelegate

  • 為 CalendaManager 創建 outlet 並聲明一些我們稍后使用的變量。

     @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 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() } } }

我剛剛使用橋接在 Swift 項目中配置了 JTCalendar。

  1. 下載示例代碼

  2. 將 JTCalendar 文件夾拖放到您的項目中。

  3. 確保橋接路徑是

$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h

  1. 設置IBOutlet和Delegate,剩下的你必須弄清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM