Slide 1

Slide 1 text

Getting Started with SpreadsheetView #5.2 Creators Learning English Meetup for Mobile @ Oisix - Monday May 29th 2017

Slide 2

Slide 2 text

Satoshi Hachiya Twitter: @jpmartha_jp • Living in Kobe ⚓ • Developing an iOS app, Player! • Organizing international conferences, try! Swift Tokyo "& try! Swift NYC # • Talked at Brooklyn Swift Developers $

Slide 3

Slide 3 text

kishikawakatsumi/SpreadsheetView https://github.com/kishikawakatsumi/SpreadsheetView

Slide 4

Slide 4 text

SpreadsheetView • Over 1,500 stars for about 2 weeks ✨ • Created by Katsumi Kishikawa

Slide 5

Slide 5 text

Features (1/2) • Fixed column and row headers • Merge cells • Circular infinite scrolling automatically • Customize gridlines and borders for each cell https://github.com/kishikawakatsumi/SpreadsheetView/blob/ master/README.md

Slide 6

Slide 6 text

Features (2/2) • Customize inter cell spacing vertically and horizontally • Fast scrolling, memory efficient • UICollectionView like API • Well unit tested https://github.com/kishikawakatsumi/SpreadsheetView/blob/ master/README.md

Slide 7

Slide 7 text

Let's get started ✊

Slide 8

Slide 8 text

Examples • Schedule • Gantt Chart • Timetable

Slide 9

Slide 9 text

Examples • Class Data

Slide 10

Slide 10 text

UICollectionView like API func numberOfColumns(in spreadsheetView: SpreadsheetView) -> Int func numberOfRows(in spreadsheetView: SpreadsheetView) -> Int func spreadsheetView(_ spreadsheetView: SpreadsheetView, cellForItemAt indexPath: IndexPath) -> Cell?

Slide 11

Slide 11 text

Merge cells

Slide 12

Slide 12 text

Merge cells example func mergedCells(in spreadsheetView: SpreadsheetView) -> [CellRange] { return [ CellRange(from: (row: 0, column: 1), to: (row: 0, column: 2)), CellRange(from: (row: 0, column: 3), to: (row: 0, column: 4)), CellRange(from: (row: 2, column: 0), to: (row: 13, column: 0)), CellRange(from: (row: 14, column: 0), to: (row: 25, column: 0)), CellRange(from: (row: 26, column: 0), to: (row: 37, column: 0)), CellRange(from: (row: 38, column: 0), to: (row: 49, column: 0)), CellRange(from: (row: 50, column: 0), to: (row: 61, column: 0)), CellRange(from: (row: 62, column: 0), to: (row: 73, column: 0)), CellRange(from: (row: 74, column: 0), to: (row: 85, column: 0)), CellRange(from: (row: 86, column: 0), to: (row: 97, column: 0)), CellRange(from: (row: 98, column: 0), to: (row: 109, column: 0)), CellRange(from: (row: 110, column: 0), to: (row: 121, column: 0)), CellRange(from: (row: 122, column: 0), to: (row: 133, column: 0)), CellRange(from: (row: 8, column: 1), to: (row: 22, column: 1)), CellRange(from: (row: 23, column: 1), to: (row: 25, column: 1)) ] }

Slide 13

Slide 13 text

Merge cells example

Slide 14

Slide 14 text

Tapping cells func spreadsheetView(_ spreadsheetView: SpreadsheetView, didSelectItemAt indexPath: IndexPath) { print(indexPath) } ! [1, 8] ! [1, 23] ! [1, 26] ! [1, 30]

Slide 15

Slide 15 text

Other frameworks? !

Slide 16

Slide 16 text

Repository Latest commit Fixed column and row headers Merge cells Star kishikawakatsumi /SpreadsheetView 2017 ✅ ✅ 1,532 stuffrabbit/ SwiftSpreadsheet 2017 ✅ 379 mutualmobile/ MMSpreadsheetV iew 2013 ✅ 171 darrarski/ DRCollectionView TableLayout-iOS 2015 ✅ 67 ʢResearched by !ʣ

Slide 17

Slide 17 text

Great !

Slide 18

Slide 18 text

Appendix: My English Tips • Speak loudly • Tell the spelling if you cannot pronounce it correctly • Nobody expects non-native speaker to speak fluent English

Slide 19

Slide 19 text

Thanks !

Slide 20

Slide 20 text

Questions?