So this is the weirdest thing I came across ever.
I add a simple UIView
on top of an UIView
on an UIViewController
. I change the size to 200 x 200 and then I want to change the UIView
's size by placing this line of code inside the viewDidLoad
method:
self.gameBackgroundView.frame.size.height = 10
which seems perfectly normal in Swift. Though, nothing happens. I can change the color, corner radius etc...
EDIT:
I have also deleted all constraints from that view and it still does not work.
Ok, So I found a solution here on stack ..
Change frame programmatically with auto layout
The correct answer, that works is, that:
- I need to create an IBOutlet of my heightConstraint
- Change the value of that constraint accordingly
Thank you all!
It is because of Auto Layout, however you could do it after Auto Layout done its work or change constraints of it. Set it your frame
in your viewDidAppear()
instead. It should be work.
I hope this help you.
Try this code, it will work on any device
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
}
来源:https://stackoverflow.com/questions/30171366/why-cant-i-change-the-views-frame-size-in-swift