«imageEdgeInsets» устарел в iOS 15.0

#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 новые опции для управления дополнениями и вставками.

  1. .titlePadding : Заполнение между надписями заголовка и субтитров.
  2. .imagePadding : Отступ между изображением кнопки и текстом.
  3. .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. Да, спасибо, я так и сделаю! Еще раз спасибо, что нашли время, очень признателен 🙂