У меня есть следующий предварительно упакованный системный образ SF:
UIImage(systemName: "location.fill")
Это может показаться тривиальным, но как я могу изменить его размер, чтобы увеличить его? Спасибо.
В приведенном ниже коде предусмотрены два метода:
Предлагаемый способ UIKit (см. developer.apple.com / документация ). Здесь вы рассматриваете изображение символа SF как шрифт и применяете к нему размер точки.
Способ SwiftUI. Кнопка (и, в данном случае, некоторый связанный текст) масштабируется до предоставленного фрейма.
import UIKit import SwiftUI class SwiftUIButton : ObservableObject { @Published var state : Bool = true { didSet { buttonDidChange(state) } } private lazy var viewController = UIHostingController(rootView: SwiftCustomButton(delegate: self)) var view : UIView { guard let view = viewController.view else { preconditionFailure("*Fatal Error* Could not create SwiftUI button") } return view } typealias typeForAction = () -> Void var action : typeForAction? func buttonDidChange(_ state : Bool) { guard let action = action else { return } action() } } struct SwiftCustomButton : View { @ObservedObject var delegate : SwiftUIButton var body : some View { VStack() { Button(action: { self.delegate.state = !self.delegate.state }) { Image(systemName: "gear") .resizable() .aspectRatio(contentMode: .fit) } Text(delegate.state ? "Hello" : "Goodbye") } } } class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let button = SwiftUIButton() button.action = { print("In the ViewController the button has changed to: \(button.state)")} button.view.frame = CGRect(x: 200, y: 200, width: 80, height: 80) view.addSubview(button.view) let image = UIImage(systemName: "gear") let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 64.0) let adjustedImage = image?.applyingSymbolConfiguration(symbolConfiguration) let uButton = UIButton(type: .custom) uButton.setImage(adjustedImage , for: .normal) uButton.frame = CGRect(x: 20, y: 200, width: 80, height: 80) uButton.target(forAction: #selector(self.buttonAction), withSender: uButton) view.addSubview(uButton) self.view = view } @objc func buttonAction() { print("UIButton pressed") } }