简体   繁体   中英

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

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:

  1. I need to create an IBOutlet of my heightConstraint
  2. Change the value of that constraint accordingly

Thank you all!

It is because of Auto Layout, however, you could do it after Auto Layout is done its work or change constraints of it. Set it your frame in your viewDidAppear() instead. It should work.

I hope this helps 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

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM