xcode 6で利用可能になったベクター画像リソースを深掘り

14
Xcode 6で利用可能になった ベクター画像リソースを 深掘り 2014/10/05 @ iOS 8/Swift エンジニア勉強会 LT

Upload: -

Post on 19-Jun-2015

4.816 views

Category:

Software


0 download

DESCRIPTION

Xcode 6で利用可能になった
ベクター画像リソースを
深掘り (2014/10/05 @ iOS 8/Swift エンジニア勉強会)

TRANSCRIPT

Page 1: Xcode 6で利用可能になったベクター画像リソースを深掘り

Xcode 6で利用可能になったベクター画像リソースを

深掘り

2014/10/05 @ iOS 8/Swift エンジニア勉強会 LT

Page 2: Xcode 6で利用可能になったベクター画像リソースを深掘り

自己紹介• Twitter: @_mono, Facebook: mono0926

• 写真整理・共有アプリSceneのiOS版作ってます

• http://scn.jp

• LINEクリエイターズスタンプ作って販売中

• ラヴさんスタンプ

• 6月のWWDCでのSwift発表直後から継続的に、Swift・Xcode6で開発してました

Page 3: Xcode 6で利用可能になったベクター画像リソースを深掘り

ベクター画像指定のやり方概要

Page 4: Xcode 6で利用可能になったベクター画像リソースを深掘り

ベクター画像指定のやり方概要

PDF書き出しサイズが重要

Page 5: Xcode 6で利用可能になったベクター画像リソースを深掘り

PDFをプレビューで開くと• PDFはサイズ情報を持つ

• images.xcassetsはそのサイズ情報をアプリの画像リソースのサイズと解釈する

• SVGファイルはサイズ情報という概念が無いので、この理由でPDFが採用された?

Page 6: Xcode 6で利用可能になったベクター画像リソースを深掘り

iPhone 6 Plusで実行

PDF書き出しサイズより 画面パーツのサイズが大きいと

ぼやける

Page 7: Xcode 6で利用可能になったベクター画像リソースを深掘り

OSXで実行

ぼやけない!

Page 8: Xcode 6で利用可能になったベクター画像リソースを深掘り

PDFの扱い• iOS

• ビルド時に@1-3xのPNG画像にラスタライズされる

• パフォーマンス考慮

• OSX

• 実行時にベクター画像(PDF)をレンダリング

• マシンパワーが高めだから?

WWDC 2014 Session 411 “What’s New in Interface Builder”より

Page 9: Xcode 6で利用可能になったベクター画像リソースを深掘り

PDFファイル書き出しはSketch 3が便利

Page 10: Xcode 6で利用可能になったベクター画像リソースを深掘り

アプリのバイナリサイズ比較

• @1-3xのPNGファイルを自前で用意

• +13.0 KB

• PDFファイルを用いてビルド時にラスタライズ

• +26.6 KB

30x30ポイントのこの画像で実験 (@1xで2KB)

なぜかPDFの方では約倍のサイズになるが大抵のケースでは問題にならないレベル?

Page 11: Xcode 6で利用可能になったベクター画像リソースを深掘り

ラスタライズされてアプリパッケージに入っているPNGファイルを見てみたい

• images.xcassetsはコンパイルされてアプリ名.app配下のassets.carとして配置される

• しかし簡単に中身の見れないファイル形式(zipなどではない)

• ちなみにOSXだと本当にラスタライズされずにPDFがそのまま入っていました

Page 12: Xcode 6で利用可能になったベクター画像リソースを深掘り

がんばってassets.carからPNGファイルを取り出す

• https://github.com/steventroughtonsmith/cartool

• CUICatalogクラスのプライベートメソッドを使ってごにょごにょ

• これをビルドして出来る成果物cartoolで取り出せる

• ./cartool Assets.car output_dir

• 本当に、@x対応がされたPNGファイルが入っていました

• https://github.com/mono0926/cartool でforkして@3x対応をトライするも成功せず…。

Page 13: Xcode 6で利用可能になったベクター画像リソースを深掘り

実利用にあたっての注意は?• PNGをそのまま表示するだけなのでパフォーマンスなどは気にする必要無し

• その代償として、iOSアプリの場合は、例えば「iPadでは少し大きめに表示したい」などというケースでは別途そのサイズにあったサイズで書き出す必要がある

• 実利用していて、まだ特に困った点無いので、どんどん使って良いと思います

• Xcode 6でビルドすればiOS7の端末での実行も可能ですiOS 6もいけそうだけど、未対応という記事があったりして不明…

• もし、どうしても困ったケースが出てきたら局所的にPNG画像使う予定

Page 14: Xcode 6で利用可能になったベクター画像リソースを深掘り

その他 参考リンク• Xcode 6 allows VECTOR image assets… any idea

how to use them?

• USING VECTOR IMAGES IN XCODE 6

• [Xcode 6] Asset Catalog でベクターが扱えるようになりました!

• Xcode6でベクター画像を利用する。

• iOSの@3x対応:Vector画像とImageAssets