xcode - каталог активов - тип изображения - одинаковый масштаб - разные разрешения - PullRequest
1 голос
/ 24 июня 2019

У меня есть приложение для iOS, которое было разработано много лет назад и устанавливает фоны для многих элементов управления с помощью каталога images.xcassets.Изображения задаются с помощью content.json, в котором целевыми объектами являются iPhone, iPad с помощью клавиши «idiom».Дополнительные спецификации включают в себя «масштаб» и «имя файла».Кажется, что это приложение работало нормально до iOS 8.

На сегодняшний день существует много устройств с высоким разрешением экрана iPhone, iPad.Итак, мне нужно добавить еще больше изображений, предназначенных для этих устройств с высоким разрешением экрана.

Я не знаю, как это обрабатывалось раньше, но теперь есть разные разрешения экрана в том же масштабном коэффициенте.Например, iPad Pro 12.9 "и iPad Pro 11" имеют коэффициент масштабирования 2x, но имеют разные разрешения: 2048x2732 и 1668x2388 соответственно.Теперь, если я создаю изображение с наивысшим разрешением 2048x2732, изображение не центрируется по разрешению 1668x2388.

  1. Есть ли какой-то определенный ключ в contents.json, который может различать разрешение экрана / размеры для того же масштаба?фактор?
  2. Когда я ищу документацию Apple по каталогу активов, она находится в этом архиве документации .Значит ли это, что мы больше не должны использовать каталог ресурсов для изображений?Существуют ли последние стандарты для установки фоновых изображений?

1 Ответ

0 голосов
/ 28 июня 2019

Существует два варианта настройки фоновых изображений для разных устройств.

1-) Установка UIImageView режима содержимого на .aspectFill.При настройке этого свойства ваше изображение будет обрезано для различных соотношений сторон, но исходное соотношение сторон будет защищено.Я рекомендую эту опцию, если вы используете повторяющиеся изображения для фона.

2-) Установка двух разных файлов активов для разного соотношения сторон и разрешения.Если вы выберете эту опцию, в коде вам нужно будет проверить устройство и установить соответствующий актив изображения.

let image: UIImage!
if UIDevice().userInterfaceIdiom == .phone {
switch UIScreen.main.nativeBounds.height {
    case 1920, 2208:
        print("iPhone 6+/6S+/7+/8+")
        image = UIImage(named:"StandartBackground.png")
    case 2436:
        print("iPhone X, XS")
        image = UIImage(named:"XBackground.png")
    case 2688:
        print("iPhone XS Max")
        image = UIImage(named:"XSBackground.png")
    }
}

Совет: Общий и правильный способ - это первый вариант, но будут случаи, которые его не подойдут.Поэтому старайтесь избегать второго варианта, но если другого варианта нет.Поместите все различные пропорции в разные файлы активов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...