Change a UIView Frame

2019-02-28 21:54发布

I have set a UIView in my storyboard and make it an outlet.

 @property (nonatomic, weak) IBOutlet UIView *testView;

In the - (void)viewDidLoad method, I want to change its frame like this

CGRect frame = self.testView.frame;
frame.size.height = 2;
self.testView.frame = frame;

But it does not work. Anybody can tell me why?

4条回答
Bombasti
2楼-- · 2019-02-28 22:24

Look at the tiny circle to the left of the property. Is it filled in or hollow? If it's hollow, then it means that you have not connected this particular element of the storyboard to the file's owner.

If the circle is filled in, than the outlet IS connected to something on your storyboard. Just make sure it's connected to the right entity, namely the UIViewController (or subclass thereof) that you are declaring testView within.

查看更多
在下西门庆
3楼-- · 2019-02-28 22:30

Trying changing the height to high number and see if that make a difference. I have created demo project for changing and reverting the height. Hope this helps.

https://github.com/rshankras/StackOverflowUIView

查看更多
仙女界的扛把子
4楼-- · 2019-02-28 22:32

Assuming its connected to your XIB do the following after changing the view -

[self.view setNeedsDisplay];
查看更多
不美不萌又怎样
5楼-- · 2019-02-28 22:45

You might enabled the autolayout in your project , if so the setFrame straightly won't work . Check here for more info

Solution :

  • Disable the autolayout, if you don't need any more
  • Check the above link using with the autolayout .
查看更多
登录 后发表回答