Я добавил свое собственное решение, которое было вдохновлено вашим ответом - спасибо!

р

Я пытаюсь установить фоновое изображение дляUINavigationBar, Есть ли способ настроить навигационную панель так, чтобы она использовалаscaleAspectFillповедение (какUIImageView с участиемcontentMode установлен вscaleAspectFill)?

Цель

У меня есть изображение, примерно соответствующее размеру navbar ландшафтного iPhone (высота 64 пт, ширина около 800 пт; хотя точное значение здесь не должно иметь значения), которое я установил с помощьюnavigationBar.setBackgroundImage(img, for: .default), Изображение является размытой фотографией, поэтому нет необходимости в пиксельном совершенстве. Кстати - я используюUINavigationBar.appearance установить фон для всех панелей навигации одновременно.

Что я хотел бы сделать: показать центральную часть изображения в портретной ориентации и показать полное изображение без кадрирования в альбомной ориентации. Если высота не совпадает точно (как и следовало ожидать на iPhone X), она должна немного увеличиться, чтобы заполнить дополнительную высоту.

В качестве альтернативного решения я также согласился бы, если изображение меньшей ширины отображается по центру и заполняет дополнительное горизонтальное пространство, растягивая первый и последний пиксельные столбцы.

Что я пробовал до сих пор

Цель 1: настройкаcontentMode изUINavigationBar - кажется, игнорируется при рендеринге изображенияЦель 2: использовать уменьшенное изображение и сделать его пригодным дляstretchableImage(withLeftCapWidth:topCapHeight:) - заполняет панель навигации, но изображение сдвигается вправо вниз (очевидно, потому что этот метод рассматривает только левое и верхнее как растягиваемые поля)Цель 2: использование уменьшенного изображения и изменение его размера с помощьюresizableImage(withCapInsets:resizingMode:) с участиемresizingMode установлен вstretch - в ландшафте он просто растягивает изображение на полную ширину, игнорируя вставки колпачка (вероятно, этот метод не делает то, что я думаю).

Ответы на вопрос(2)

Ваш ответ на вопрос