Swift 3 - 横向模式下我的UIViewController的背景图像问题

时间:2017-05-01 18:41:08

标签: ios iphone swift3

首先,这是以编程方式完成的,而不是在Storyboards中完成的。

我正在为我的UIViewController使用背景图片。它在纵向模式下看起来很好但是因为我的图像对于横向模式来说不够宽,所以当设备倾斜到横向模式时,图像会变倍(同一图像显示两次,并排显示)。如果将设备旋转到横向模式以避免此问题,是否可以切换到不同的背景图像?

请注意:我正在尝试这样做,而无需为横向模式创建一个全新的UIViewController。

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "backgroundimage.png")!)


    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.view.backgroundColor = UIColor.clear

    view.addSubview(inputsContainerView)
    view.addSubview(loginRegisterButton)
    view.addSubview(profileImageView)
    view.addSubview(loginRegisterSegmentedControl)

    setupInputsContainerView()
    setupLoginRegisterButton()
    setupProfileImageView()
    setupLoginRegisterSegmentedControl()
}

1 个答案:

答案 0 :(得分:1)

使用 UIImageView 设置背景图片,而不是使用 UIColor(patternImage:)方法。请参阅以下代码段

var backgroundImageView: UIImageView!

  override func viewDidLoad() {
    super.viewDidLoad()

    backgroundImageView = UIImageView(frame: CGRect(x: self.view.frame.origin.x, y: self.view.frame.origin.y, width: self.view.frame.width, height: self.view.frame.height))
    backgroundImageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    view.addSubview(backgroundImageView)
  }

我创建了一个backgroundImageView并将图像设置为该视图。为了处理纵向和横向模式,还设置了autoresizingMask参数