Как мне установить вес для SF Symbols для iOS 13?

У меня есть это

Image(systemName: "arrow.right")

Но как мне сделать его жирным, полужирным и т. Д.?

Я использую новый SwiftUI.

8 ответов

Решение

При использовании font модификатор, установите вес шрифта, который вы передаете

Image(systemName: "arrow.right")
  .font(Font.title.weight(.ultraLight))

Для UIKit символы можно настроить следующим образом:

UIImage(systemName: "arrow.right",
        withConfiguration: UIImage.SymbolConfiguration(pointSize: 16, weight: .bold))

SwiftUI 1.0

Я просто хотел также упомянуть, как изменить вес вместе с настраиваемым размером шрифта.

HStack(spacing: 40) {
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .ultraLight))
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .light))
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .regular))
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .bold))
}

https://i.stack.imgur.co m/FNNiY.png

Вы также можете обернуть Image с участием Text. С этим вы можете использовать и назначить fontWeight() к Text:

Text(Image(systemName: "xmark"))
    .fontWeight(.semibold)

UIKit - Swift 5 - Xcode 11

Если вы только хотите установить вес (так что вы не запутались авто значок проклейки), сделайте следующее:

let configuration = UIImage.SymbolConfiguration(weight: .semibold)
UIImage(systemName: "trash", withConfiguration: configuration)

UIKit SWIFT 5.x

Чтобы установить их атрибуты: создайте конфигурацию, затем передайте ее в качестве параметра:

let imageConfig = UIImage.SymbolConfiguration(pointSize: 22, weight: .black, scale: .large)
let image = UIImage(systemName: "delete.right", withConfiguration: imageConfig)

Для iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0 вы можете использоватьfontWeight()прямо наImage().

      Image(systemName: "chevron.right")
    .fontWeight(.semibold)

Xcode 13.4, Свифт 5.Х

      import UIKit
import SwiftUI


public extension Image {
    
    @available(iOS 13.0, *)
    static func buildSystemImage(named systemName: String, weightConfiguration: UIImage.SymbolWeight) -> Image? {
        guard let imageConfig = UIImage(systemName: systemName, withConfiguration: UIImage.SymbolConfiguration(weight: weightConfiguration)) else { return nil }
        return Image(uiImage: imageConfig)
    }
}

Использование:

      if let systemImage = Image.buildSystemImage(named: "arrow.left", weightConfiguration: .semibold) {
    // Your code.                
}
Другие вопросы по тегам