Slide 1

Slide 1 text

e-Conte board Story behind the development Kaz Yoshikawa April 2020

Slide 2

Slide 2 text

About me

Slide 3

Slide 3 text

Kaz Yoshikawa • Electricwoods LLC / Digital Lynx Systems Inc. • e-mail: [email protected] • twitter: @codelynx1 • Working History • Adobe Systems Tokyo • Lionbridge Tokyo • Quark Tokyo / Denver • Hummingbird Communications Mountain View • Fact International Vancouver • Perle Systems Ltd Toronto • Nihon Software Kaihatsu Nagoya

Slide 4

Slide 4 text

What is e-Conte board?

Slide 5

Slide 5 text

C PICTURE DIALOGUE ACTION TIME No. 18 SE ܯใԻ Φϖ OFF ʮʢӳʣ֎นഁ ଛʂʯ Φϖ ʮઈର๷Ӵ۠ഁΒΕ· ͢ʯ ࢘ྩࣨ ࢘ྩͨͪͳΊϞχ λʔ 4+00 C73 SE ཛྷ ΰΥΥΥ SE όΩόΩΩɽɽɽ ج஍֎෦ ཱͪฒͿϓϥϯτͷԞͰߕ ൘͕Ί͘Ε্͕Δ ※֎͸ ܹ͍͠෩Ӎ 2+00 C74 ఱ࢖ͷྠΛ·ͱͬͨ࢖ె্ ঢͯ͘͠Δɻ Ӎ 2+01 C75 ΦΦΦΦ ๺ۃج஍શܠ ʢւ্ϓϥϯτͷ࿈݁ঢ়ʣ ্ঢ͍ͯ͘͠ ࢖ ੺ࠇ͘௜Μͩւ໘ PAN ※Մ ͳΒߥΕͨւ໘ͷന೾ ࢀߟɿ๺ւ༉ా 5+08 C76 TOTAL(13+09) Storyboard

Slide 6

Slide 6 text

UITableViewCell Apple Pencil to draw Finger to scroll

Slide 7

Slide 7 text

UIScrollView

Slide 8

Slide 8 text

e-Conte board • Wished to implement drawing engine with Metal • But implemented with Core Graphics • Planed to implement like Catmull-rom line smoothing • Apple Pencil is fast enough moveto lineto

Slide 9

Slide 9 text

Apple Pencil and Touch

Slide 10

Slide 10 text

To draw or to scroll? • Case 1 • Pen tool to draw • Hand tool to scroll and zoom • Case 2 • Single finger to draw • Double finger to scroll and zoom

Slide 11

Slide 11 text

To draw or to scroll? • Case 3 • Apple Pencil to draw • Finger to scroll and zoom

Slide 12

Slide 12 text

Apple Pencil to draw GVODUPVDIFT.PWFE @UPVDIFT4FU6*5PVDI XJUIFWFOU6*&WFOU \ GPSUPVDIJOUPVDIFT\ TXJUDIUZQF\ DBTFEJSFDU'JOHFS DBTFJOEJSFDU CSFBL DBTFQFODJM DPEFUPESBX !BWBJMBCMF J04 DBTFJOEJSFDU1PJOUFS CSFBL EFGBVMU ˠ ^ ^ Reject finger Accept Apple Pencil

Slide 13

Slide 13 text

Touch to scroll or zoom PWFSSJEFGVODWJFX%JE-PBE \ TVQFSWJFX%JE-PBE TFMGUBCMF7JFXQBO(FTUVSF3FDPHOJ[FS BMMPXFE5PVDI5ZQFT <6*5PVDI5PVDI5ZQFEJSFDUSBX7BMVFBT/4/VNCFS> ^ Reject Apple Pencil

Slide 14

Slide 14 text

Touch to scroll or zoom TFMGTDSPMM7JFXQBO(FTUVSF3FDPHOJ[FSBMMPXFE5PVDI5ZQFT <6*5PVDI5PVDI5ZQFEJSFDUSBX7BMVFBT/4/VNCFS> Reject Apple Pencil

Slide 15

Slide 15 text

–Kaz Yoshikawa “Touch to scroll and zoom Apple Pencil to draw” provide better user experience if arrowed

Slide 16

Slide 16 text

Segmented Tool Control

Slide 17

Slide 17 text

SegmentedToolControl • Not a UIControl it’s a UIView • SegmentedControl like UI object • for Vertical and Horizontal • Item can only be image (icon) not text • Two Level Grouping • Category > Item • Only one among all can be selected

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

class SomeViewController: UIViewController { @IBOutlet weak var control: SegmentedToolControl! static let heartKey = "hammer" ... static let itemSize = CGSize(width: 32, height: 32) func makeSegmentedItem(_ identifier: String) -> SegmentedItem { return SegmentedItem(identifier: identifier, image: UIImage(systemName: identifier)!.resizing(to: Self.itemSize)!) } func setup() { control.itemSize = Self.itemSize control.orientation = .vertical control.direction = .right control.delegate = ... control.segmentedCategoryItems = [ SegmentedCategoryItem(items: [ self.makeSegmentedItem(Self.heartKey), self.makeSegmentedItem(Self.spadeKey), self.makeSegmentedItem(Self.diamondKey), self.makeSegmentedItem(Self.clubKey), ]), ] } } extension ViewController: SegmentedToolControlDelegate { func segmentedToolControl(_ control: SegmentedToolControl, didSelectItem item: SegmentedItem) { switch item { case Self.heartKey: ... case Self.spadeKey: ... ... } } }

Slide 22

Slide 22 text

codelynx/SegmentedToolControl

Slide 23

Slide 23 text

Fin