iPhone: How to set UIViewController frame?

2019-02-05 21:08发布

问题:

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?

回答1:

@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.



回答2:

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.



回答3:

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];
...