51
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iOS13時代のSVG表示設定方法

Last updated at Posted at 2019-07-06

Xcode 12以降を使用する場合はこちらをご覧ください。

はじめに

デザイナーからアイコン素材としてSVGが納入される機会が出てきたこの頃。
WWDC2019のIntroducing SF Symbolsの中で AVOID rasterizing! と言ってるくらいなので、
SS00003.png
iOS13時代のアプリでSVGを扱う方法は何が最適か試行錯誤してみました。
(Xcode 11 beta3, Deployment Target = iOS 12.0)

前提: SVGKitなどのライブラリは使いません。

SVGのサイズ

SVGは拡大しても大丈夫なはずなのですが、
:o: SVGは3x画像のサイズに設定してください。
:x: 1x画像サイズにすると、2x画像、3x画像がギザギザになります。 (iOS12以下にて)

デザイナーへ発注するときにお願いするのが理想的ですが、
「SVGは拡大してもギザギザにならないんだからサイズ指定するとかおかしいでしょ!」 と些細な事で揉めがちなので:cloud_rain:
検索すればフリーのツールやサイトを見つけることができます。

SVGのファイル形式

:small_red_triangle:従来通りPDFに変換してください。
デザイナーへ発注するときにお願いするのが理想的ですが、
(略)
検索すればフリーのツールやサイトを見つけることができます。

SVGの設定

  1. Asset CatalogにImage Setを作成する。
  2. Resizing Preserve Vector Dataにチェックする。
  3. Scalesは Individual Scalesにセットする。
  4. SVGを1xにセットする。(2x、3xは空欄)

:o: SVGはコードで表示すること。

imageView.image = UIImage(named: "svgSample")

:x: Storyboardで画像を設定しただけではギザギザになります。

S_SVG_IMAGE_SET.png

比較

左からiOS13、iOS12(3xサイズSVGをセット)、iOS12(1xサイズSVGをセット)
SS0001.png

iOS13以降しかTargetにしないとき

:o: SVGサイズは気にしなくていいです。
:small_red_triangle:PDFに変換してください。
:small_red_triangle:コードで表示してください。

  1. Asset CatalogにImage Setを作成する。
  2. Resizing Preserve Vector Dataにチェックする。
  3. Scalesは Single Scaleにセットする。
  4. SVGをAllにセットする。
    SS0002.png
    :o: 2x、3xは空欄でいいの?とか3xサイズなのに1xにセットするの?とか気にしなくていい。

感想

iOS13のベクター画像の扱いが素晴らしくなっている。:clap:
早く変換なしでSVGをセットできるようにしてほしい。
iOS12以下を切ってしまいたい誘惑が〜:fire::jack_o_lantern::fire:


Xcode 11 beta3を元に作成しています。

51
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?