#ios #swift
Вопрос:
Я получаю предупреждение:
'imageEdgeInsets' was deprecated in iOS 15.0
При настройке UIButton imageEdgeInsets, например, так:
button.imageEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
Я попытался настроить наборы изображений следующим образом:
UIImage(named: "filter")?.withRenderingMode(.alwaysTemplate).withAlignmentRectInsets(UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10))
И там, где вверху, слева, справа и внизу положительные или отрицательные значения, не повезло. Любой, кто знает версию
imageEdgeInsets
Это не устарело в iOS 15?
Вся помощь приветствуется,
с уважением 🙂
Ответ №1:
iOS 15 Apple представила 3 новые опции для управления дополнениями и вставками.
.titlePadding
: Заполнение между надписями заголовка и субтитров..imagePadding
: Отступ между изображением кнопки и текстом..contentInsets
: Отступ от области содержимого кнопки до ее границ.
Используя вышеуказанную опцию, вы можете управлять своим стилем кнопок и настраивать его в соответствии с ним.
Вы можете проверить эту статью для получения дополнительной информации. Источник и изображение
Поэтому ваш код должен быть таким
var configuration = UIButton.Configuration.filled()
configuration.title = "Title"
configuration.image = UIImage(systemName: "swift")
configuration.titlePadding = 10
configuration.imagePadding = 10
configuration.contentInsets = NSDirectionalEdgeInsets(top: 10, leading: 10, bottom: 10, trailing: 10)
Комментарии:
1. Классно! Это работает, я просто не могу заставить его работать с несистемными образами. Когда я использую огромное изображение из своих активов, оно не имеет правильного размера, независимо от размера. Конфигурация или размер кнопки. Помощь в этом была бы действительно признательна! (Надеюсь, что решением не является заполнение в 500 или изменение размера изображения)
2. Я думаю, что вам нужно изменить размер изображения или установить некоторый размер в UIButton. до iOS 15, возможно, также невозможно.
3. Это исправление делает свое дело, но применение .configuration, похоже, отменяет настройки шрифта для UIButton. Есть какие-нибудь идеи о том, как предотвратить это?
4. Эй, я применил тот же метод к заголовку моей кнопки, и он отлично работает, когда я впервые загружаю приложение, но размер шрифта становится больше, когда я нажимаю кнопку или представляю другой контроллер представления. Какая-нибудь помощь?
5. Означает ли это, что если мы не предоставим конфигурацию, устаревшие свойства все еще будут работать? Есть ли способ подавить предупреждение? Спасибо!
Ответ №2:
Swift теперь поставляется по умолчанию с различными типами кнопок, которые вы можете настроить начиная с iOS 15 и далее. Используйте UIButton.Configuration
для настройки вашей кнопки. Для вашего случая вы можете использовать,
config.imagePadding = 5
Пример можно увидеть ниже:
var filled = UIButton.Configuration.filled()
filled.title = "Filled button"
filled.buttonSize = .large
filled.subtitle = "With subtitle even"
filled.image = UIImage(systemName: "bubble.left.fill")
filled.imagePlacement = .trailing
filled.imagePadding = 5
let button = UIButton(configuration: filled, primaryAction: nil)
Изображения и кодовые кредиты для nemecek.be
Комментарии:
1. Очень хорошее решение! Большое вам спасибо, но у меня действительно есть проблема. Когда я использую огромное изображение из своих активов, оно не имеет правильного размера, независимо от размера. Конфигурация или размер кнопки. Помощь в этом была бы действительно признательна! (Надеюсь, решение не заключается в заполнении 500 или изменении размера изображения) 🙂
2. Я так не думаю. Попробуй
button.imageView.contentMode = .scaleAspectFill/scaleAspectFit
3. Попробуйте изменить размер изображения?
4. Да, спасибо, я так и сделаю! Еще раз спасибо, что нашли время, очень признателен 🙂