iPhone:如何设置UIViewController框架?

iPhone:如何设置UIViewController框架?,iphone,ios,uiview,uiviewcontroller,Iphone,Ios,Uiview,Uiviewcontroller,我有一个根UIViewController,我正在将其他UIViewController添加为子视图。目前,每个子视图都太低(覆盖了我的自定义构建选项卡)。当我尝试执行以下操作时,它不起作用: // Test setting frame size to see if it works self.view.frame = CGRectMake(0, 0, 200, 200); 这对改变帧大小没有任何作用 因此,我的问题是,当UIViewController作为子视图添加后初始化时,如何设置帧?首

我有一个根UIViewController,我正在将其他UIViewController添加为子视图。目前,每个子视图都太低(覆盖了我的自定义构建选项卡)。当我尝试执行以下操作时,它不起作用:

// Test setting frame size to see if it works
self.view.frame = CGRectMake(0, 0, 200, 200);
这对改变帧大小没有任何作用


因此,我的问题是,当UIViewController作为子视图添加后初始化时,如何设置帧?

首先,确保帧实际上没有改变大小。可能它/正在/改变大小,但您希望它剪辑其内容;默认情况下,此行为在UIView上未启用,需要通过以下方式设置:

  [[self view] setClipsToBounds:YES];
要仔细检查并确保在设置新帧后帧的大小没有改变,请尝试记录以下内容:

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

或者只需在更改后设置断点并在调试器中检查值。

@Nic我认为,当您添加其他视图时,此时应定义其他视图的帧大小,如下所示:

Someviewcontroller *c = initWithNibName
c.view.frame = CGRectMake(0, 0, 200, 200);
[self addSubView:c];
我不知道这是否有效,但它是这样的。

然后总是

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


如果可以,请改用Interface Builder。添加子视图控制器后,是否尝试在其ViewDidDisplay方法中设置子视图控制器的框架?我正在尝试viewDidLoad方法。这似乎在我的一个视图中有效,但另一个视图是UINavigationController,如果uiviewcontroller是UIAbbarController的一部分,该如何操作?当uiviewcontroller是UIAbbarController的一部分时,我不知道如何设置uiviewcontroller的帧。现在清楚了吗?在tabbarcontroller的情况下不能这样做。I viewcontroller的视图框架将根据状态栏和导航栏的显示与否自动设置。我明白了。但我有一个uiview,它是uiviewcontroller的子视图,是否可能?我尝试设置这个uiview 0,0200200的框架,但它总是显示全尺寸。为什么?如果你对此有问题,请发布所有代码。谢天谢地,这很简单而且总是有效的。这很像你的viewcontroller或view中有什么东西,那就是“事后”调整大小。
// Entire Screen
CGRect l_RectFrame = [UIScreen mainScreen].bounds;


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame];
...