为什么我不能在 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
有效的正确答案是:
- 我需要为我的 heightConstraint 创建一个 IBOutlet
- 相应地更改该约束的值
谢谢大家!
试试这个代码,它适用于任何设备
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
}
所以这是我遇到过的最奇怪的事情。
我在 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
有效的正确答案是:
- 我需要为我的 heightConstraint 创建一个 IBOutlet
- 相应地更改该约束的值
谢谢大家!
试试这个代码,它适用于任何设备
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
}