Изображение панели навигации для iphone 5 и 6

Я пытаюсь создать приложение для iphone 5, 6 и 6 plus.

Я добавил пользовательское изображение для панели навигации, но возникла проблема. В images.xcassets есть два слота 2х и 3х.

Я уже знаю, что 2x для iphone 5 и 6 и 3x для 6 plus. Если я помещу изображение для iphone 5 в слот 2x, оно будет слишком маленьким (когда я эмулирую приложение на iphone 6), а если я поставлю изображение для телефона 6 в этот слот, оно будет слишком большим (когда я эмулирую приложение на iphone 5). ).

Итак, как мне настроить изображение панели навигации для iphone 5 и 6, если мне не хватает одного слота? Должен ли я использовать условие там?


person Arsenii Nibble    schedule 01.10.2015    source источник


Ответы (1)


Вы можете справиться с этим из кода, например

Быстрый

var navBarImage: UIImage? = nil
if UIScreen.mainScreen().bounds().size.width == 375.0 {
    navBarImage = UIImage.imageNamed("yourimage-iphone6@2x").resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0))
}
else {
    if UIScreen.mainScreen().bounds().size.width == 414.0 {
        navBarImage = UIImage.imageNamed("yourimage-iphone6plus3x").resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0))
    }
    else {
        navBarImage = UIImage.imageNamed("yourimage-iPhone5").resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0))
    }
}
UINavigationBar.appearance().setBackgroundImage(navBarImage, forBarMetrics: UIBarMetricsDefault)

Цель с

UIImage *navBarImage =nil;
if ([[UIScreen mainScreen] bounds].size.width==375.0f) {
    navBarImage = [[UIImage imageNamed: @"yourimage-iphone6@2x"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
}
else if ([[UIScreen mainScreen] bounds].size.width==414.0f) {
    navBarImage = [[UIImage imageNamed: @"yourimage-iphone6plus3x"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
}
else{
   navBarImage = [[UIImage imageNamed: @"yourimage-iPhone5"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

}

[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
person Imran    schedule 01.10.2015
comment
Кроме того, использование переключателя сделает ваш код намного чище и эффективнее. - person danialzahid94; 01.10.2015
comment
Спасибо за версию Swift, она работает! - person Arsenii Nibble; 01.10.2015
comment
WellCome @ArseniiNibble - person Imran; 01.10.2015
comment
@ЭрикД. спасибо за предложение, которое очень помогает - person Imran; 01.10.2015