티스토리 뷰
https://github.com/della-padula/Elliotable
GitHub Star 하나씩 부탁드립니다 :)
iOS 개발 시 사용할 수 있는 라이브러리를 개발하였다.
해외 대학교도 비슷하겠지만 강의 정보를 리스트(배열)로 전달해주면 해당 아이템들이 시간표에 추가되어 보여주는 라이브러리다.
선 색, 선 두께, 배경, 각 강의별 폰트 크기, 폰트 굵기, 요일 개수, 요일 구성 등 다양한 커스텀 옵션들을 제공해준다.
언어는 Swift 5.1 버전을 사용하였으며 iOS 11.0이상 버전의 프로젝트를 대상으로 라이브러리를 제공한다.
배포는 CocoaPods을 통해 배포하였으며 pod install을 통해 간편하게 라이브러리를 설치할 수 있다.
Cocoapods을 제외한 다른 방법으로도 배포를 해볼 의향도 있지만 처음 라이브러리를 제작하여 배포한 것이기 때문에 보다 시간을 가지고 천천히 방법을 다양화 시킬 예정이다.
License는 MIT 라이센스를 적용하였다. (학생이기 때문에 굳이 다른 라이센스를 적용할 필요는 없다고 판단)
let course_1 = ElliottEvent(courseId: "2150000000", courseName: "운영체제",
roomName: "정보과학관 21204", courseDay: .tuesday, startTime: "12:00",
endTime: "13:15",
backgroundColor: UIColor(red: 1.0, green: 0.73, blue: 0.0, alpha: 1.0),
tapHandler: handler)
기본적으로 강의는 강의 ID와 이름, 장소, 시작 시간, 종료 시간으로 구분 된다. 교수명은 굳이 시간표에 보여줄 필요가 없어서 제거하였지만, 호환성을 위해 교수명을 넣는 방향도 고려하고 있다.
(어차피 라이브러리를 사용하는 사람들이 직접 강의 객체를 만들어서 잘 사용할 것이라고 생각하며 믿는다.)
let handler = { (course: ElliottEvent) in
print(course.courseName, course.courseDay)
}
위 코드는 강의 아이템을 터치하였을 때 실행할 핸들러를 정의한 코드이다.
아래 코드에서 tapHandler라는 parameter로 넘겨줄 핸들러이기도 하다.
라이브러리 개발자 원하는 기능을 커스텀 핸들러를 제작하여 인자로 넘겨줄 수 있게 된다.
elliotable.courseItems = [course_1, course_2, course_3, course_4, course_5, course_6, course_7, course_8, course_9, course_10]
elliotable.userDaySymbol = daySymbol
elliotable.dayCount = daySymbol.count
elliotable.backgroundColor = .white
elliotable.borderWidth = 0.5
elliotable.borderColor = UIColor(red: 0.9, green: 0.9, blue: 0.9, alpha: 0.9)
elliotable.cornerRadius = 0
elliotable.textEdgeInsets = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2)
elliotable.maximumNameLength = 18
elliotable.textFontSize = 11
elliotable.roomNameFontSize = 8
courseItems를 통해 강의 리스트를 넘겨 주면 시간표를 생성하게 된다.
DaySymbol은 월, 화, 수, 목 등 요일을 의미하며 자신이 원하는 것으로 지정할 수 있는 속성이다.
이름은 최대한 알아보기 편하게 정하였으나 계속 점진적으로 개선할 예정이다.
마지막으로 스크린샷을 올려보도록 하겠다.
배경색, 선 색 모두 커스텀화가 가능하기 때문에 원하는 디자인으로 구현이 가능하다는 장점이 있다.
깃허브 Star 한 번 씩 부탁드리며, 계속 지켜봐주시기 바랍니다.
'Frontend > iOS' 카테고리의 다른 글
[APP] Notissu - 숭실의 모든 공지사항 (0) | 2019.11.15 |
---|---|
Notissu-개인정보취급방침 (0) | 2019.11.15 |
UI Alert Controller 에 대한 이해 (0) | 2019.07.29 |
View Controller 상태 변화에 따른 API Method (0) | 2019.06.28 |
AppDelegate Method 정리 (0) | 2019.06.28 |
- Total
- Today
- Yesterday
- retrofit
- 함수형
- android
- 스위프트
- Rxjava
- apple
- SwiftUI
- java
- databinding
- 함수형프로그래밍
- 안드로이드
- 상속
- Kotlin
- Swift
- 코틀린
- Notissu
- 아이폰
- 애플워치
- Apple Watch
- CloudComputing
- Elliotable
- ios
- Reactive programming
- Auto Layout
- C++
- 알고리즘
- 컬렉션
- XCode
- 오토레이아웃
- watchos
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |