Изменение фона при изменении ориентации не выполняется

У меня есть два изображения bg-land и bg-port для различной ориентации. Я хочу изменить изображение по ориентации chnaging. Но изображение не меняется. Когда я загружаю Simulator в LandScape, bg-land работает отлично, но не работает с Rotation. Код:

  override func viewDidLoad() { super.viewDidLoad() loadBackground() } func loadBackground(){ if(UIApplication.sharedApplication().statusBarOrientation.isPortrait){ var bgImage = UIImage(named: "bg-port") var background = UIImageView(frame: self.view.bounds); background.image = bgImage self.view.addSubview(background) self.view.sendSubviewToBack(background) println(bgImage) } else { var bgImage = UIImage(named: "bg-land") var background = UIImageView(frame: self.view.bounds); background.image = bgImage self.view.addSubview(background) self.view.sendSubviewToBack(background) println(bgImage) } } override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { loadBackground() } 

2 Solutions collect form web for “Изменение фона при изменении ориентации не выполняется”

Это не меняется, потому что вы отправляете недавно добавленный UIImageView на задний UIImageView ранее созданного UIImageView . Вместо этого создайте переменную-член в своем классе для UIImageView . (Назовите его как background )

 func loadBackground() { if self.background == nil { self.background = UIImageView() self.view.addSubview(self.background) self.view.sendSubviewToBack(self.background) } if(UIApplication.sharedApplication().statusBarOrientation.isPortrait) { var bgImage = UIImage(named: "bg-port") self.background.frame = self.view.bounds; self.background.image = bgImage } else { var bgImage = UIImage(named: "bg-land") self.background.frame = self.view.bounds; background.image = bgImage } } 

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

Этот код отлично работает для меня:

  override func viewDidLoad() { super.viewDidLoad() self.loadBackground() } func loadBackground(){ if(UIApplication.sharedApplication().statusBarOrientation.isPortrait){ let imageName = "Texture.jpg" let image = UIImage(named: imageName) let imageView = UIImageView(image: image!) imageView.frame = self.view.bounds view.addSubview(imageView) } else { let imageName = "AppIcon.png" let image = UIImage(named: imageName) let imageView = UIImageView(image: image!) imageView.frame = self.view.bounds view.addSubview(imageView) } } override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) { loadBackground() } 

Не забудьте изменить имя изображения из этого кода.

Может быть, это поможет вам.

  • API JSON и UIPageViewController дополнительно Nil
  • iOS Swift: отдельный AppDelegate для XCTest
  • Как установить текст кнопки в Swift
  • Как я могу разрешить предупреждение профиля сообщества iOS?
  • Нет звука из удаленного уведомления в Swift
  • анализ json и сохранение с использованием основных данных swift 2.0.
  • Изменить цвет фона uisearchcontroller
  • Управление сеансом Spotify
  • iOS - виджет расширения для домена со временем
  • Прокрутка Uiview с веб-просмотром
  • Проблемы с заголовком камеры с отображением карты
  • Interesting Posts

    Использование UICollectionView из UICollectionViewCell

    addUIInterruptionMonitor (withDescription: обработчик :) не работает на iOS 10 или 9

    Почему iPhone 6 использует активы 2x 2x?

    UICollectionView удаляет разрывы разделов с помощью UICollectionViewFlowLayout

    раскадровка имеет вопросительные знаки для каждого изображения после импорта в xcassets

    Управление памятью в Swift: память не открывается после завершения NSOperation

    Экспорт SecKey из iOS в watchOS

    Xcode 7 не может найти файлы заголовков из фреймворка

    Как дождаться завершения встроенной анимации UITableView?

    Правильное использование CIDetectorTracking

    Ошибка в добавлении рамки AFNetworking в проект

    Перетащите и переместите что-то в построителе интерфейса, не меняя родительский / супервизор

    XCode пытается скомпилировать библиотеки Objective-C как Swift

    Уровни класса AutoLayout – разные пропорциональные высоты

    Как получить текущее название города без использования службы определения местоположения?

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