본문 바로가기
Developer/iOS, Swift

[Swift] 캘린더 라이브러리, FSCalendar 사용법 및 예제

by Doony 2020. 1. 7.

이번 포스팅에서는 캘린더 라이브러리인 FSCalendar의 기본적인 사용법에 대해 알아보겠습니다. 최근 스케쥴 관리 앱 제작을 시작하면서 캘린더를 사용해야했는데요. 여러 라이브러리가 있지만, 가장 쉽고 커스터마이징이 좋다고 합니다.
공식 깃허브에서 자세한 내용을 확인하실 수 있습니다.


이것 말고도 VACalendar, JAappleCalendar 등 일부 써봤는데, 일단 가장 간편하게 사용할 수 있다는 점 만큼은 확실한 장점 같습니다.


pod 설치하기

프로젝트 생성 후, 터미널에서 프로젝트 폴더로 이동한 뒤 아래 명령어를 실행합니다.
pod init
폴더에 생성된 podfile에 아래 내용을 입력 후 저장합니다.
pod 'FSCalendar'
이제 다시 터미널로 돌아와서 FSCalendar을 설치합니다. 이런 식의 pod 이용 방법은 한두번해보다 보면 자연스럽게 익힐 수 있습니다.
pod install
이제 라이브러리가 프로젝트에 생성되었으니, 사용해볼까요?


storyBoard에 캘린더 생성하기

view 하나를 스토리보드 올린 뒤, 아래와 같이 설정합니다.

  • View Class를 FSCalendar로 설정 (뷰에 캘린더가 표시됩니다.)
  • ViewController에 delegate, datasource 설정 (컨트롤+뷰 누른 상태로 뷰컨트롤러로 드래그하면 설정가능)

날짜 선택 시 해당일 출력하기

스토리보드에서 생성한 View에 대한 Outlet을 만들고, calendar라고 명명합니다. 그 후 아래와 같이 뷰컨트롤러에 코드 입력하고 실행하시면, 날짜를 선택할 때마다 해당일이 출력되는 것을 볼 수 있습니다.
해당 기능을 이용해 다음에 Realm과 연동시켜 데이터베이스화하는 과정에 대해서도 알아보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import UIKit
import FSCalendar
 
class MainViewController: UIViewController, FSCalendarDataSource, FSCalendarDelegate {
    
    
    @IBOutlet var calendar: FSCalendar!
    
 
    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendar.allowsMultipleSelection = true
        calendar.delegate = self
        calendar.dataSource = self
 
        // Do any additional setup after loading the view.
    }
    
    
    // 날짜 선택 시 콜백 메소드
    public func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "YYYY-MM-dd"
        print(dateFormatter.string(from: date))
    }
 
    // 날짜 선택 해제 시 콜백 메소드
    public func calendar(_ calendar: FSCalendar, didDeselect date: Date, at monthPosition: FSCalendarMonthPosition) {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "YYYY-MM-dd"
        print(dateFormatter.string(from: date))
    }
 
    
    
 
}
 
cs




이 외 여러가지 사용 방법은 공식 사이트인 여기에서 확인하실 수 있습니다.

댓글