2016-01-27 2 views
0

Я использую каталог активов с 2x изображений для iPhone5 и 6, как описано в docs:Как использовать каталог активов для фонового изображения панели навигации?

enter image description here

Изображение для панели навигации фона 750x128 (750 х 44 * 2 + 20 * 2), потому что я хочу также панель состояния. 750 - ширина разрешения iPhone6. Установка Bg изображения:

self.navigationController?.navigationBar 
    .setBackgroundImage(UIImage(named: "nav_bar_bg"), forBarMetrics: .Default) 

Давайте посмотрим на результат:

enter image description here

OK. iPhone5:

enter image description here

Не OK. Как я могу уменьшить его, не удаляя фоновое изображение из каталога активов? Я действительно не хочу его жестко кодировать. Это действительно раздражает, что ресурсы iPhone5 и 6 не могут быть разделены.

Любые предложения? Спасибо

ответ

1

Извините, не заметил вещь UINavigationBar ... Вы можете изменить размер изображения, который используется в фоновом режиме, сделав ваше изображение stretchable. Таким образом, вы можете использовать картинку, которая подходит для меньших устройств (iPhone5 в вашем примере) и сохранить изображение в центре экрана iPhone.

Еще одним сложным решением было бы подклассы NavBar в целом и переписать способ изображения нарисован.


Вы должны использовать NSLayoutConstraints (ведущий, верхние и задний) и установите содержание UIImageView по размеру. Таким образом, вам не нужно будет менять изображение, оно будет автоматически масштабироваться приложением.

+0

Предоставляет ли 'UINavigationBar' api для извлечения изображения bg? – Leo

+0

Нет, это не так. Обновлен мой ответ с помощью «возможного» решения. – CharlesThierry

+0

Спасибо, лучше всего поймать, на мой взгляд, подкласс NavBar – Leo

Смежные вопросы