iPhone: How to set UIViewController frame?

2019-02-05 21:00发布

I have a root UIViewController that I am adding other UIViewController's as subviews. Currently each of the subviews are too low down (covering up my custom build tabbar). When I try to so something like the following, it does not work:

// Test setting frame size to see if it works
self.view.frame = CGRectMake(0, 0, 200, 200);

That does nothing to change the frame size.

So, my question is, how can I set my frame when the UIViewController is initialized after it is added as the subview?

3条回答
叼着烟拽天下
2楼-- · 2019-02-05 21:05

Then there's always...

// Screen, less StatusBar
CGRect l_RectFrame = [UIScreen mainScreen].applicationFrame;

OR...

// Entire Screen
CGRect l_RectFrame = [UIScreen mainScreen].bounds;


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame];
...
查看更多
贪生不怕死
3楼-- · 2019-02-05 21:13

@Nic i think when you are adding that other view, at that time you should define the other views frame size like this:

Someviewcontroller *c = initWithNibName
c.view.frame = CGRectMake(0, 0, 200, 200);
[self addSubView:c];

i dont know if this will work but it is something like this.

查看更多
beautiful°
4楼-- · 2019-02-05 21:28

First, ensure that your frame is actually not changing size. Likely it /is/ changing size, but you are expecting it to clip its contents; this behavior is not enabled by default on a UIView, and would need to be set via:

  [[self view] setClipsToBounds:YES];

To double check and ensure that your frame is / is not changing size after setting the new frame, try logging this:

  NSLog(@"New frame is: %@", NSStringFromCGRect([[self view] frame]));

or simply setting a breakpoint after the change and inspecting the value in your debugger.

查看更多
登录 后发表回答