2011-02-08 60 views
19

我有一个root UIViewController,我添加了其他UIViewController作为子视图。目前每个子视图都太低了(覆盖了我的自定义构建标签栏)。当我尝试如下类似的东西时,它不起作用:iPhone:如何设置UIViewController框架?

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

这并没有改变帧的大小。

所以,我的问题是,当UIViewController被添加为子视图后,如何设置我的框架?

+0

如果可以的话,而不是使用Interface Builder。 – 2011-02-08 04:40:11

+0

您是否在添加子视图控制器后尝试在其viewDidAppear方法中设置子视图控制器的框架? – alones 2011-02-08 04:42:11

+0

我正在尝试viewDidLoad方法。 – 2011-02-08 04:58:12

回答

21

@Nic我认为,当您添加的另一种观点,这时候你应该定义其他视图帧大小是这样的:

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

我不知道这是否会工作,但它是这样的。

6

首先,确保您的框架实际上没有改变大小。可能它/正在改变大小,但你期望它能够剪切它的内容;这种行为不是在默认情况下一个UIView启用,将需要通过设置:

[[self view] setClipsToBounds:YES]; 

仔细检查,并确保您的帧/不设置新的框架之后,改变大小,尝试登录此:

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

或者简单地在更改后设置断点并检查调试器中的值。

4

然后总是有...

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

或者......

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


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