Slide 1

Slide 1 text

˜ZPVSOBNF"MMSJHIUTSFTFSWFE3FEJTUSJCVUJPOPSQVCMJDEJTQMBZOPUQFSNJUUFEXJUIPVUXSJUUFOQFSNJTTJPOGSPNZPVSOBNF *OUSPEVDFUPVDIBOEQFFL 1SPHSBNNJOH ू·ΕSwift޷͖ʂSwiftѪ޷ձ vol11 :VJDIJ:PTIJEB 3FTFBSDIFS %&/40*5-BCPSBUPSZ *OD (FUUJOHTUBSUFEXJUI%UPVDI

Slide 2

Slide 2 text

4FMGJOUSPEVDUJPO sonson • sonson_twit@Twitter • sonsongithub@github Portfolio • 2tch(̎ͪΌΜͶΔϒϥ΢β)ͳͲͳͲ ຊۀ • ΫϧϚۀք • ը૾ೝࣝͱ͔ɼUIͱ͔৭ʑ΍͓ͬͯΓ·͢ ιʔεΛެ։ͯ͠Δ΋ͷ΋͋Γ·͢ IUUQHJUIVCDPNTPOTPOHJUIVC

Slide 3

Slide 3 text

SFEEJGU 0QFOTPVSDFQSPKFDU 1ԯਓҎ্ͷΞϝϦΧͷSNS API͋Γ Objective-CͷAPI Wrapper͸͋Γ • OAuth2ʹରԠͯ͠ͳ͍ • Swift͡Όͳ͍ Α͠ɼ͍ͬͪΐɼझຯʴษڧ͕ͯΒ࡞Δ͔ʂ MIT License

Slide 4

Slide 4 text

4XJGU GSPNUP ݁࿦ • beta1͔Βॱʹશ෦ରԠͨ͠ɾɾɾͳͷͰۤ࿑͕ബΕ͍ͯΔͱ͍͏͔ҧ͍͕Θ͔Βͳ͍ ۤ࿑ͨ͠ͱ͜Ζ • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε • ҙຯෆ໌ͳ࢓༷มߋʢม਺ͷܕͱ͔ʣ

Slide 5

Slide 5 text

5PVDIBOEQFFL *OUSPEVDF%UPVDI ༻ҙ • registerForPreviewing(with:sourceView:) • unregisterForPreviewing(withContext:) σϦήʔτ - UIViewControllerPreviewingDelegate • previewingContext(_:viewControllerForLocation:) • previewingContext(_:commit:)

Slide 6

Slide 6 text

%UPVDI 1. registerForPreviewingͰ४උ͢Δ 2. Ϣʔβ͕ڧ͘ԡ͢ 3. previewingContext(_:viewControllerForLocation:)͕ݺ͹ΕΔ 4. ԡ͞ΕͨྖҬΛઃఆ͢Δ 5. ͜͜Ͱview controllerΛ࡞Γɼฦ͢ 6. ࠷ޙ·Ͱڧ͘ԡ͠ࠐΉ 7. previewingContext(_:commit:)͕ݺ͹ΕΔ 8. ͜͜Ͱ͖ͬ͞࡞ͬͨview controllerΛͲ͏͢Δ͔ܾΊΔ

Slide 7

Slide 7 text

QSFWJFXJOH$POUFYU @WJFX$POUSPMMFS'PS-PDBUJPO 1SFQBSFBWJFXDPOUSPMMFSGPSQFFLJOH ϝΠϯʹ΍Δ͜ͱ • view controllerΛ࡞Δ • ԡ͞Εͨ৔ॴͷ৘ใΛ൑ఆ͢Δ • ৔ॴΛcontextʹೖྗ͢Δ • view controllerͷαΠζΛܾఆ͢Δ

Slide 8

Slide 8 text

QSFWJFXJOH$POUFYU @WJFX$POUSPMMFS'PS-PDBUJPO $SFBUFWJFXDPOUSPMMFSBOEGFUDIDPOUFOUT func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { // Create new view controller for peeking let controller = WebViewController(nibName: nil, bundle: nil) let locationInTextView = self.view.convert(location, to: textView) // get contents controller.url = getUrl(at: locationInTextView) return controller }

Slide 9

Slide 9 text

QSFWJFXJOH$POUFYU @DPNNJU )PXJTUIFWJFXDPOUSPMMFSTIPXO ϝΠϯʹ΍Δ͜ͱ • ࠓද͍ࣔͯ͠Δview controllerΛͲ͏͢Δ͔ܾΊΔ UIViewControllerͷ͓࡞๏Ͱ΍Γ·͠ΐ͏ • modalʁ • pushʁ • ಠࣗʁʢ͓͢͢Ί͠ͳ͍ʣ

Slide 10

Slide 10 text

QSFWJFXJOH$POUFYU @DPNNJU 1VTI1SFTFOUWJFXDPOUSPMMFS func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { // Modal let nav = UINavigationController(rootViewController: viewControllerToCommit) self.present(nav, animated: true, completion: nil) // Push navigationController?.pushViewController(viewControllerToCommit, animated: false) }

Slide 11

Slide 11 text

.FOV

Slide 12

Slide 12 text

)PXUPQSFQBSFNFOVJUFNT override var previewActionItems : [UIPreviewActionItem] { get { let action1 = UIPreviewAction(title: “action1”, style: .default) { previewAction, viewController in print(title) } let action2 = UIPreviewAction(title: “delete”, style: .destructive) { previewAction, viewController in print(title) } return [action1, action2] } }

Slide 13

Slide 13 text

ۤ࿑͢Δͱ͜Ζʁ ৔ॴͷ͋Δίϯςϯπͷऔಘ • CGRect • func contains(_ point: CGPoint) -> Bool ͋ΔViewͷCGRect΍CGPointΛଞͷView͔Βݟͨͱ͖ɾɾɾɾ • UICoordinateSpaceϓτϩίϧΛ࢖͏ • func convert(CGPoint, to: UICoordinateSpace) • func convert(CGPoint, from: UICoordinateSpace) • func convert(CGRect, to: UICoordinateSpace) • func convert(CGRect, from: UICoordinateSpace)

Slide 14

Slide 14 text

αϯϓϧ ιʔείʔυ • https://github.com/sonsongithub/UZTextView/tree/develop • Sample3DTouch project WWDC2016 • https://developer.apple.com/videos/play/wwdc2016/228/

Slide 15

Slide 15 text

·ͱΊ Swift3 • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε • SwiftͰ࡞ΒΕͨ֎෦ϥΠϒϥϦͷϝϯςφϯε 3D touch - Touch & Peek • ׂͱ؆୯ • ରԠ͢ΔσϦήʔτ͸؆୯ • λονͨ͠৔ॴʹରԠ͢Δ৘ใΛ൑ఆ͢Δͷ͕େม