Я пытаюсь использовать системное изображение «mappin» из SF Symbols с круглым фоном. Независимо от того, какую ширину, высоту или отступы я использую, изображение всегда выглядит сжатым. Исходное изображение тонкое и высокое, и когда я пытаюсь его использовать, изображение выглядит толстым и сжатым.
Я попытался установить одинаковое значение для ширины и высоты, установив высоту больше ширины, но ничего не показывает исходное изображение. Я даже пробовал scaleToFit() вместо scaleToFill(), и это тоже не помогло.
Код:
HStack {
Image(systemName: "mappin")
.renderingMode(.template)
.resizable()
.scaledToFill()
.frame(width: 8.0, height: 5.0, alignment: .center)
.padding(5.0)
.background(Color.green)
.foregroundColor(.white)
.clipShape(Circle())
TextField("Hello World", text: .constant("Hello")).foregroundColor(Color.black)
}
Вывод приведенного выше кода:
Скриншот mappin из SF Symbols:
Что я могу сделать, чтобы значок выглядел тоньше и выше?
Спасибо!
Пробовал заменить scaleToFill на aspectRatio, а также пробовал aspectRatio на scaledToFill/scaledToFit.. дает тот же результат.
Ваш приведенный выше код кажется мне нормальным, но если вы не можете настроить ширину или высоту, я думаю, что проблема не в блоке кода, который вы показываете выше, есть ли у вас какое-либо другое представление, которое обертывает блок кода выше? если так, я думаю, что это может быть проблемой.





Вместо того, чтобы пытаться установить определенный размер (который не будет масштабироваться с помощью пользовательских настроек текста), вы можете просто использовать версию символа SF для карты с закрашенным кругом. Это будет масштабироваться пропорционально тексту в соответствии с настройками пользователя:
HStack {
Image(systemName: "mappin.circle.fill")
.foregroundColor(.green)
TextField("Hello World", text: .constant("Hello")).foregroundColor(Color.black)
}
Символ появится в размере, который Apple считает подходящим для текста. Вы можете использовать .imageScale, чтобы выбрать маленький, средний (по умолчанию) или большой размер для некоторого контроля. В качестве альтернативы, установка другого стиля текста шрифта, отличного от основного текста по умолчанию, может использоваться для некоторой настройки размера и при этом иметь правильное масштабирование с пользовательскими настройками размера текста.
Это сработало отлично! Спасибо! Я не заметил, что уже был значок заполнения карты. С моим кодом, вероятно, форма клипа сжимала значок.
Вы пытались потенциально добавить .aspectRatio(contentMode: .fit)? Извините, сейчас не на компьютере, но первое предположение будет таким.