2015-10-01 2 views
0

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

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

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

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

ответ

1

Вы можете обрабатывать его из кода, как

Swift

var navBarImage: UIImage? = nil 
if UIScreen.mainScreen().bounds().size.width == 375.0 { 
    navBarImage = UIImage.imageNamed("[email protected]").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) 

Objective C

UIImage *navBarImage =nil; 
if ([[UIScreen mainScreen] bounds].size.width==375.0f) { 
    navBarImage = [[UIImage imageNamed: @"[email protected]"] 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]; 
+1

Хотя этот ответ может быть правильным, пожалуйста, дайте ответы на Swift на вопрос меченой «быстрый». Спасибо. – Moritz

+0

Кроме того, использование коммутатора сделает ваш код намного более чистым и эффективным. – danialzahid94

+0

Спасибо за версию Swift, она работает! –

0
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; 
Смежные вопросы