2013-07-03 44 views
0

我想为一个视图做一个子视图并使其尺寸较小,但是,子视图不能调整大小。我想知道我是否错过了一些东西。视图控制器的'viewDidLoad'代码是这样的:UIView没有调整大小,有没有我失踪的属性?

[_testView setBackgroundColor:[UIColor greenColor]]; 

CGRect frame = self.testView.frame; 
frame.size.height -= 500; 
// self.testView.frame = frame; 
[_testView addSubview:_testSubView]; 

[_testSubView setFrame:frame]; 

但是没有看到子视图高度的变化。任何想法为什么?

+0

是自动布局吗? –

+0

对视图大小的调整应该在视图控制器的'viewWillLayoutSubviews'方法中,而不是'viewDidLoad'中。但在'viewDidLoad'中保持对'addSubview:'的调用。 – rmaddy

+0

或viewWillAppear –

回答

0

如果您使用的是“viewDidLoad”方法,则假定您正在初始化此视图的nib文件是安全的。如果这个视图有任何约束,实际上它们可能被应用于 viewDidLoad方法之后的视图,因为视图的最终大小直到“viewWillAppear”方法才被完全确定。长期以来,尝试将您的框架更改为“viewWillAppear:animated:”方法。

+0

看起来应该进入'viewDidLayoutSubviews'。当我把调整大小的代码放在那里时,视图会被调整大小。 – easythrees

0

在您的子视图上设置了autoresizingMask吗?

_testSubView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; 

检查autoresizesSubviews是否也设置在您的父视图中。

_testView.autoresizesSubviews = YES; 

我想你也应该看看autolayout。

Regards,