1. ホーム
  2. xcode

[解決済み] Xcodeでベクター画像はどのように動作しますか(例:pdfファイル)?

2022-04-15 16:36:54

質問

Xcode 6では、ベクターサポートはどのように機能するのですか?

画像のサイズを変更すると、ギザギザになるのですが、どうしてですか?

解決方法は?

Xcode (7 and 6.3+) でベクターを使用する方法。

  1. 画像を .pdf ファイルを適切な@1倍サイズで作成します(例 ツールバーボタンの場合は24x24 ).
  2. あなたの 画像.xcassets ファイルを作成し、新しい 画像セット .
  3. 属性インスペクタ を設定します。 スケールファクター に変更します。 単一ベクトル .
  4. pdfファイルをドラッグ&ドロップで すべて、ユニバーサル のセクションをご覧ください。
  5. これで、他の画像と同じように、画像名で参照できるようになりました。 .png ファイルを作成します。

    UIImage(named: "myImage")
    
    

Xcodeの古いバージョン(6.0 - 6.2)でベクターを使用する方法。

  • 上記の手順で、手順3を除いては タイプ から ベクター .

Xcodeにおけるベクターの動作

ベクターのサポートは、Xcodeでは混乱します。なぜなら、ほとんどの人がベクターというと、拡大縮小しても見栄えのする画像を思い浮かべるからです。しかし、Xcode 6と7は、iOSのための完全なベクターサポートを持っていないので、物事は少し異なって動作します。

ベクターシステムは 本当にシンプル . それはあなたの .pdf の画像を作成し @1x.png , @2x.png および @3x.png の資産を ビルド時 . (可能 Assets.carの中身を調べるツールを使ってください。 で確認することができます)。

例えば、次のようなものが与えられたとします。 foo.pdf は、44x44 のベクターアセットです。で ビルドタイム を実行すると、以下のファイルが生成されます。

これは、どのサイズの画像でも同じように機能します。例えば bar.pdf というように、100x100のものを取得します。


インプリメンテーション

  • 画像の新しいサイズを選択することはできません 44x44のサイズでなければ、見栄えがしません。その理由は 完全なベクターサポートは実装されていません。 . これらのベクターができることは、画像資産を保存する時間を節約することだけです。もし、既にこれをワンステップで行えるツール(例えば、Photoshopのスクリプト)を持っているなら、pdfベクターを使うことで得られるものは、次のことだけです。 将来的なサポート (例えば、iOS 9でAppleが@4xのアセットを要求し始めたとしても、これらはそのまま機能します)、そして、あなたは メンテナンスするファイルが少ない .
  • すべてのアセットを@1xサイズで、PDFファイルとして保存してもらう必要があります . これにより、UIImageViewsが正しい固有コンテンツサイズを持つことができます。

なぜ(おそらく)このように動作するのか。

  • これにより 後方互換性 は、以前のiOSバージョンと互換性があります。
  • ベクターのリサイズは、実行時に計算負荷がかかる場合があります。 パフォーマンスヒットはありません。 .