จࣈྻΛίϐʔͰ͖ΔεΫϦʔϯγϣοτΛ࡞ΔגࣜձࣾZOZOςΫϊϩδʔζZOZOTOWN෦͑ΜͲ͏Copyright © ZOZO Technologies, Inc.
View Slide
© ZOZO Technologies, Inc.גࣜձࣾZOZOςΫϊϩδʔζZOZOTOWN෦͑ΜͲ͏▶ ZOZOTOWN / iOSΞϓϦ։ൃ▶ Twitter: re___you2
© ZOZO Technologies, Inc.͝ଘͰ͠ΐ͏͔ʁ3
© ZOZO Technologies, Inc.4͝ଘͰ͠ΐ͏͔ʁ- iOS 13͔ΒϑϧϖʔδͷεΫϦʔϯγϣοτ͕Մೳʹʂ
© ZOZO Technologies, Inc.5- iOS 13͔ΒϑϧϖʔδͷεΫϦʔϯγϣοτ͕Մೳʹʂ- αʔυύʔςΟΞϓϦରԠͰ͖Δ͝ଘͰ͠ΐ͏͔ʁ
© ZOZO Technologies, Inc.6- iOS 13͔ΒϑϧϖʔδͷεΫϦʔϯγϣοτ͕Մೳʹʂ- αʔυύʔςΟΞϓϦରԠͰ͖Δ- อଘܗࣜPDF͝ଘͰ͠ΐ͏͔ʁ
© ZOZO Technologies, Inc.7εΫϦʔϯγϣοτͰจࣈΛίϐʔݕࡧͰ͖Δɻͦ͏ɺPDFͳΒͶɻ
© ZOZO Technologies, Inc.8ͦ͏ɺPDFͳΒͶSafariͷϑϧϖʔδεΫϦʔϯγϣοτͰ จࣈྻͷίϐʔ&ݕࡧ͕Ͱ͖Δ
© ZOZO Technologies, Inc.9
© ZOZO Technologies, Inc.10จࣈͷίϐʔ͕Ͱ͖ͳ͍
© ZOZO Technologies, Inc.11จࣈΛίϐʔͰ͖ͳ͍PDFͨͩͷը૾ͩ
© ZOZO Technologies, Inc.12ࠓ͢͜ͱ- ͳͥPDFจࣈྻΛίϐʔͰ͖Δͷ͔ʁ- ͳͥจࣈྻΛίϐʔͰ͖ͳ͔ͬͨͷ͔ʁ- จࣈྻΛίϐʔͰ͖ΔPDFΛ࡞Δʹʁ
© ZOZO Technologies, Inc.13ࠓ͞ͳ͍͜ͱ- ϑϧϖʔδͷεΫϦʔϯγϣοτͷ࡞ʹ͍ͭͯ- TECH BLOGʹߘ͍ͯ͠·͢https://techblog.zozo.com/entry/ios_fullpage_screenshot
© ZOZO Technologies, Inc.ͳͥPDFจࣈྻΛίϐʔͰ͖Δͷ͔ʁ14Episode 1.
© ZOZO Technologies, Inc.15PDFจࣈใΛ͍࣋ͬͯΔ
© ZOZO Technologies, Inc.16PDFͷจࣈͷඳըจࣈใ
© ZOZO Technologies, Inc.17PDFͷத
© ZOZO Technologies, Inc.18PDFͷத
© ZOZO Technologies, Inc.19PDFͷத
© ZOZO Technologies, Inc.ͳͥจࣈྻΛίϐʔͰ͖ͳ͔ͬͨͷ͔ʁ20Episode 2.
© ZOZO Technologies, Inc.21จࣈใΛ͍࣋ͬͯͳ͔ͬͨ
© ZOZO Technologies, Inc.22จࣈྻΛίϐʔͰ͖ͳ͍PDFը૾ը૾ը૾ը૾
© ZOZO Technologies, Inc.23จࣈྻΛίϐʔͰ͖ͳ͍PDFը૾ը૾ը૾ը૾จࣈը૾ʹͳ͍ͬͯͨ
© ZOZO Technologies, Inc.24จࣈྻΛίϐʔͰ͖ͳ͍PDFը૾ը૾ը૾ը૾ͳͥͳͷ͔ʁ
© ZOZO Technologies, Inc.iOSͷඳըʹ͍ͭͯ25- iOScontextʹΑͬͯඳըܗ͕ࣜมΘΔ- PDFContext → PDF- ImageContext → ը૾https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html
© ZOZO Technologies, Inc.26iOSͷඳըʹ͍ͭͯPDFContextʹඳը͢Ε͍͍ײ͡ʹͳΔͱࢥ͍ͬͯͨ
© ZOZO Technologies, Inc.27let renderer = UIGraphicsPDFRenderer(bounds: view.bounds)let data = renderer.pdfData { context incontext.beginPage()view.layer.render(in: context.cgContext)}UIGraphicsEndPDFContext()ίʔυΛݟͯ͠ΈΔ
© ZOZO Technologies, Inc.28let renderer = UIGraphicsPDFRenderer(bounds: view.bounds)let data = renderer.pdfData { context incontext.beginPage()view.layer.render(in: context.cgContext)}UIGraphicsEndPDFContext()ίʔυΛݟͯ͠ΈΔո͍͠
© ZOZO Technologies, Inc.29view.layer.renderԿΛඳը͍ͯ͠Δͷ͔ʁ
© ZOZO Technologies, Inc.30view.layer.renderUIViewͷίϯςϯπͷϏοτϚοϓΛඳը͍ͯ͠Δ
© ZOZO Technologies, Inc.31UIViewͱCALayerͷؔCALayer PDFContextdrawRectrenderίϐʔͰ͖ͳ͍PDFBitmapContextϏοτϚοϓUIView
© ZOZO Technologies, Inc.จࣈྻΛίϐʔͰ͖ΔPDFΛ࡞Δʹʁ32Episode 3.
© ZOZO Technologies, Inc.33ViewΛඳը͢Δ
© ZOZO Technologies, Inc.34UIViewCALayer PDFContextdrawRectrenderίϐʔͰ͖ͳ͍PDFBitmapContextϏοτϚοϓPDFContextίϐʔͰ͖ΔPDFviewΛඳը͢Δ
© ZOZO Technologies, Inc.35let renderer = UIGraphicsPDFRenderer(bounds: view.bounds)let data = renderer.pdfData { context incontext.beginPage()view.layer.render(in: context.cgContext)}UIGraphicsEndPDFContext()viewΛඳը͢Δ
© ZOZO Technologies, Inc.36let renderer = UIGraphicsPDFRenderer(bounds: view.bounds)let data = renderer.pdfData { context incontext.beginPage()view.draw(view.bounds)}UIGraphicsEndPDFContext()viewΛඳը͢Δ
© ZOZO Technologies, Inc.37
© ZOZO Technologies, Inc.Կඳը͞Εͳ͍
© ZOZO Technologies, Inc.39let renderer = UIGraphicsPDFRenderer(bounds: view.bounds)let data = renderer.pdfData { context incontext.beginPage()view.draw(view.bounds)}UIGraphicsEndPDFContext()viewΛඳը͢Δ
© ZOZO Technologies, Inc.40let renderer = UIGraphicsPDFRenderer(bounds: view.bounds)let data = renderer.pdfData { context incontext.beginPage()view.subviews.forEach {$0.draw($0.bounds)}}UIGraphicsEndPDFContext()viewΛඳը͢Δ
© ZOZO Technologies, Inc.41
© ZOZO Technologies, Inc.ϨΠΞτ͕ࠨ্ʹີͰ͢
© ZOZO Technologies, Inc.43view.layer.render ϨΠΞτഎܠͷඳըಁաॲཧϘʔμͷඳըAspectFillରԠ
© ZOZO Technologies, Inc.44͋ͱ࣮͢Δ͚ͩ
© ZOZO Technologies, Inc.45
© ZOZO Technologies, Inc.46ৄ͍࣮͠GitHubhttps://github.com/EndouMari/SampleScreenshot