Как установить фоновое изображение для UINavigationBar на разных устройствах iOS

Я хочу установить полное изображение на UINavigationBar , для этого у меня есть:

 @2x image (640 x 128) @3x image (960 x 192) 

Ниже приведен снимок экрана:

введите описание изображения здесь

Пожалуйста, обратитесь к этому желтому контуру. Эта часть разрезается.

Я написал этот код, чтобы добавить изображение:

  override func viewDidLoad() { super.viewDidLoad() self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"nav-bar-b"),for: .any, barMetrics: .default) } 

Пожалуйста, помогите мне предложить лучшее решение.

4 Solutions collect form web for “Как установить фоновое изображение для UINavigationBar на разных устройствах iOS”

Я исправил эту проблему следующим образом:

Возьмите навигационную базу изображений на размер устройства, иначе уничтожьте навигационное изображение.

iPhone 6P => // 1242 × 191 пикселей
iPhone 6 => // 750 × 128 пикселей
iPhone 5 => // 640 × 128 пикселей

 func SetNavigationImage() { var navBackgroundImage:UIImage! if IS_IPHONE_6P { navBackgroundImage = UIImage(named: "nav-bar-b_1242×191") //1242 × 191 pixels }else if IS_IPHONE_6 { navBackgroundImage = UIImage(named: "nav-bar-b_750×128")//750 × 128 pixels } else { navBackgroundImage = UIImage(named: "nav-bar-b_640×128")//640 × 128 pixels } UITabBar.appearance().layer.borderWidth = 0.0 UITabBar.appearance().clipsToBounds = true UINavigationBar.appearance().isTranslucent = false UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent UINavigationBar.appearance().setBackgroundImage(navBackgroundImage, for:.default) UINavigationBar.appearance().shadowImage = UIImage() UINavigationBar.appearance().tintColor = .white } 

 var IS_IPHONE_4_OR_LESS = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0 var IS_IPHONE_5 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0 var IS_IPHONE_6 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0 var IS_IPHONE_6P = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0 

попробуйте этот код в viewDidLoad

UINavigationBar.appearance (). SetBackgroundImage (UIImage (named: «image») !. resizableImage (withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), для: .default)

1.self.navigationController.navigationBar.setBackgroundImage (изображение, forBarMetrics: .Default)

2. Высота навигационной панели изменяется с 44 точек (88 пикселей) до 64 точек (128 пикселей).

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

Для Swift 3:

 if let image = UIImage(named: "imagefile") { let backgroundImage = image.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch) self.navigationController?.navigationBar.setBackgroundImage(backgroundImage, for: .default) } 

или

 if let image = UIImage(named: "imagefile") { let backgroundImage = image.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch) UINavigationBar.appearance().setBackgroundImage(backgroundImage, for: .default) } 
  • Вернуться к RootViewController из Modal View Controller
  • Hide NavigationBar для одного ViewController в раскадровке
  • UINavigationBar отскакивает, а не остается на месте
  • iphone - can not push modal views после добавления subview в окно?
  • «Неравновесные вызовы для начала / окончания появления переходов», предупреждающие, когда наводят вид в модальном виде в XCode 4 с помощью раскадровки
  • Перейти к первому виду контроллера в приложении
  • Показать / скрыть навигациюБар, когда представление перетаскивается в iOS 8
  • Как сделать флип-анимацию на модальном вид на iPad прозрачным в фоновом режиме?
  • iOS 7 Back Button Pop Gesture
  • как отправить значение строки с помощью popToViewController
  • Как пропустить 2 представления при использовании контроллера навигации
  • Interesting Posts

    CLLocationManager и вопросы точности – любой опыт?

    Получите уникальный идентификатор (MAC-адрес, UDID и т. Д.) В Adobe AIR для iOS

    Ввод анимации: удаление символов

    Решение проблем в реестре аварийных сообщений XCode 7

    Есть ли библиотеки с открытым исходным кодом для создания аудио визуализации для iOS?

    iOS: поиск правильного размера шрифта для установки в UILabel в зависимости от его размера

    Смотреть проблемы OS2 NSTimer

    Добавьте UIToolBar ко всем клавиатурам (быстро)

    Как установить только время в переменной NSDate?

    performSegueWithIdentifier не будет вызывать просмотр

    В чем разница между NSURLSessionDataTask и NSURLSessionDownloadTask

    Можно ли напечатать тип функции в Swift?

    UITableView, возможно ли иметь 2 строки в одной и той же ячейке, используя left + right justify?

    Отключение клавиш на клавиатуре

    «Использование неразрешенного идентификатора« Царство »

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.