为什么我不能在 Swift 中更改视图的框架大小?

Why can't I change the view's frame size in Swift?

所以这是我遇到过的最奇怪的事情。

我在 UIViewController 上的 UIView 之上添加了一个简单的 UIView。我将大小更改为 200 x 200,然后我想通过将这行代码放在 viewDidLoad 方法中来更改 UIView 的大小:

self.gameBackgroundView.frame.size.height = 10

这在 Swift 中似乎完全正常。虽然,什么也没有发生。我可以更改颜色、角半径等...

编辑:

我也删除了该视图中的所有约束,但它仍然不起作用。

这是因为 Auto Layout,但是,您可以在 Auto Layout 完成其工作或更改其约束后执行此操作。改为将其设置为 frame 中的 viewDidAppear()。它应该可以工作。

希望对您有所帮助。

好的,所以我在堆栈上找到了解决方案..

Change frame programmatically with auto layout

有效的正确答案是:

  1. 我需要为我的 heightConstraint 创建一个 IBOutlet
  2. 相应地更改该约束的值

谢谢大家!

试试这个代码,它适用于任何设备

let BackImage = UIImage(named: "backGrndImg@2x.png")!

var imageView: UIImageView!

override func loadView() {

    super.loadView()
    self.imageView = UIImageView(frame: CGRectZero)
    self.imageView.contentMode = .ScaleAspectFill
    self.imageView.image = BackImage
    self.view.insertSubview(imageView, atIndex: 0)

}

override func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews()
    self.imageView.frame = self.view.bounds

}