更改方向更改背景失败

Changing Background on orientation change fails

我有两张图片 bg-landbg-port 用于不同的方向。我想改变改变方向的形象。但是,图像不会改变。当我在 LandScape 中加载模拟器时,bg-land 工作完美但不适用于旋转。代码:

   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()
    }

这段代码对我来说工作正常试试这个:

   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()
}

不要忘记更改此代码中的图像名称。

也许这会对你有所帮助。

它没有改变,因为您将新添加的 UIImageView 发送到您之前创建的 UIImageView 的后面。与其这样做,不如在 class 中为 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 插座并使用代码加载图像,而不是在 运行 时创建一个插座。我更喜欢这是一个不错的方法。