LoginSignup
22
13

More than 1 year has passed since last update.

SwiftUIおよびUIKitでのSFシンボルのカスタマイズ(サイズ、カラー、各層で異なる色)

Last updated at Posted at 2021-10-23

この記事では、SwiftUIおよびUIKitアプリケーション用にSFシンボルをカスタマイズする方法について説明します。

  • テキスト内にSFシンボルのアイコンを入れる
  • アイコンのサイズをカスタマイズ
  • アイコンの色をカスタマイズ
  • アイコンのフロント層を強調
  • アイコンの各層で異なる色を設定

 SFシンボルの画像の追加について

Apple Developerのウェブサイトから、SFシンボルのアプリをダウンロードしていただけます。

img

SwiftUIでは、以下のコードを使用してください。

Image(systemName: "swift")

クリックしてUIKitのコードを展開
let img = UIImage(systemName: "swift")
let imageView = UIImageView(image: img)
imageView.center = .init(x: view.bounds.width / 2,
                         y: view.bounds.height / 2)
view.addSubview(imageView)

テキスト内にSF Symbolアイコンを含める

スクリーンショット 2021-10-22 14.35.38.png

SwiftUIでは、以下のコードを使用してください。

Text("You can put a symbol \(Image(systemName: "swift")) within a text.")

クリックしてUIKitのコードを展開
let imgAttachment = NSTextAttachment(image: UIImage(systemName: "swift")!)
let labelText = NSMutableAttributedString(string: "Favorite programming language: ")
labelText.append(NSMutableAttributedString(attachment: imgAttachment))
labelText.append(NSAttributedString(string: "Swift"))
let label = UILabel()
label.attributedText = labelText
label.center = .init(x: 0,
                     y: view.bounds.height / 2)
label.sizeToFit()
view.addSubview(label)

SF Symbolアイコンのサイズを変更

プリセットされたサイズの1つを使うか、フォントサイズ数を指定することができます

スクリーンショット 2021-10-22 14.39.55.png

SwiftUIでは、以下のコードを使用してください。

// より大きなSF Symbol
Image(systemName: "swift")
    .font(.title)
// 特定サイズのSF Symbolアイコン
Image(systemName: "checkmark")
    .font(.system(size: 30))

クリックしてUIKitのコードを展開
let largeImg = UIImage(systemName: "swift", withConfiguration: UIImage.SymbolConfiguration(textStyle: .largeTitle))

let customFontSizeImg = UIImage(systemName: "swift", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 60)))

アイコンサイズとフォントファミリを同時に変更する

SF シンボルアイコンに複数の設定を同時に適用することができます。

SwiftUIでは、以下のコードを使用してください。

Image(systemName: "checkmark")
    .font(.title.weight(.black))
    .foregroundColor(.green)

クリックしてUIKitのコードを展開
let weightConfig_black = UIImage.SymbolConfiguration(weight: .black)
let fontConfig_largeTitle = UIImage.SymbolConfiguration(textStyle: .largeTitle)
let largeBoldConfig = weightConfig_black.applying(fontConfig_largeTitle)
let largeBlackImg = UIImage(systemName: "checkmark", withConfiguration: largeBoldConfig)

アイコンのフロントレイヤーをハイライト表示します。

SFシンボルアイコンには複数のレイヤーが含まれる場合があります。 アイコンのフロントレイヤーをハイライト表示できます。

スクリーンショット 2021-10-22 14.45.56.png

SwiftUIでは、以下のコードを使用してください。

Section {
    Image(systemName: "checkmark.icloud.fill")
        .font(.largeTitle)
        .foregroundColor(.blue)

    Image(systemName: "checkmark.icloud.fill")
        .font(.largeTitle)
        .foregroundColor(.blue)
        .symbolRenderingMode(.hierarchical)
}

クリックしてUIKitのコードを展開
let frontHighlightedIcon = UIImage(systemName: "checkmark.icloud.fill", withConfiguration: UIImage.SymbolConfiguration(hierarchicalColor: .systemBlue))

アイコン全体に色を割り当てる

スクリーンショット 2021-10-22 23.15.35.png

SwiftUIでは、以下のコードを使用してください。

Image(systemName: "checkmark")
    .foregroundColor(.green)

クリックしてUIKitのコードを展開
let blueInternetImg = UIImage(systemName: "network")?.withTintColor(.systemBlue)

アイコンのレイヤーごとに異なる色を設定する

スクリーンショット 2021-10-22 23.16.41.png

一部のアイコンは、すでにAppleのカラー構成になっています。
このプリセットカラーを表示するには、SF Symbolsを開き、右側のメニューのブラシアイコンをクリックして、マルチカラーオプションをクリックしてください。

スクリーンショット 2021-10-22 14.52.14.png

事前設定された色を使いたい場合には、以下のコードを使えます。

Image(systemName: "checkmark.circle.trianglebadge.exclamationmark")
    .font(.largeTitle)
    .symbolRenderingMode(.multicolor)

クリックしてUIKitのコードを展開
let multiColorImg = UIImage(systemName: "gear.badge.checkmark", withConfiguration: UIImage.SymbolConfiguration.preferringMulticolor())

アイコンの各レイヤーの色をご自身で定義することもできます。

スクリーンショット 2021-10-22 23.16.50.png

SwiftUIでは、以下のコードを使用してください。

Image(systemName: "display.trianglebadge.exclamationmark")
    .font(.largeTitle)
    .symbolRenderingMode(.palette)
    .foregroundStyle(.red, .green)

Image(systemName: "network.badge.shield.half.filled")
    .font(.largeTitle)
    .symbolRenderingMode(.palette)
    .foregroundStyle(.green, .blue)

クリックしてUIKitのコードを展開
let multiColorImg = UIImage(systemName: "gear.badge.checkmark", withConfiguration: UIImage.SymbolConfiguration(paletteColors: [.systemGreen, .systemBlue]))


:relaxed: Twitter @MszPro

:sunny: 私の公開されているQiita記事のリストをカテゴリー別にご覧いただけます。

22
13
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
22
13