Autolayout:根据内容调整UIView的大小

时间:2015-02-02 21:57:41

标签: ios objective-c xcode uiview autolayout

一直在敲我的头。

点击按钮,我想将FooViewController添加到窗口。 FooViewController的宽度将取决于窗口宽度,FooViewController的高度将取决于子UILabel,FooLabel的高度。

- (void) didTapBtn:(id)sender {

float width, height, x, y, margin = 20;

FooViewController *vc = [[FooViewController alloc] initWithNibName:@"FooViewController" bundle:nil];
RootViewController *root = (RootViewController*)[UIApplication sharedApplication].keyWindow.rootViewController;

vc.fooLabel.text = @"Dynamic text goes here. Resize view controller view frame so it fits to this label";

width = CGRectGetWidth(root.view.bounds) - margin*2;
height = CGRectGetHeight(vc.view.frame);

x = margin;
y = (CGRectGetHeight(root.view.bounds) - height) / 2;

vc.view.frame = CGRectMake(x, y, width, height);

[root addChildViewController:vc];
[vc didMoveToParentViewController:root];    
[root.view addSubview:vc.view];    
 }

如您所见,我正在从xib加载FooViewController。让我们说在xib中,FooView只有一个子视图,FooLabel。 FooLabel的顶部,前导,尾随和底部约束为0(它填充FooView),其行数设置为0.我需要采取哪些措施,以便使FooLabel收缩而不是适合框架FooView,FooView的高度增长,以适应FooLabel的全部内容。

正如代码所示,宽度和x值设置正确,但高度设置为FooViewController.xib定义的值。我理解为什么会这样,因为我没有做任何事情要告诉它根据标签内容调整大小 - 这基本上是我的问题:如何以这种方式调整视图大小?

0 个答案:

没有答案