在UIView中动态放置标签和按钮

时间:2011-12-08 15:58:59

标签: iphone uiview uilabel

我想知道是否有一种动态的方式来填充UIView。

例如,考虑我有几个UILabel对齐为行,其文本也是动态的。

如果第一个UILabel的文字有多行,我知道我可以打电话

  

[myLabel sizeToFit];

根据内容调整自身大小。

是否有一种简单的方法可以将此信息传播到UIView的所有子视图(在我的情况下为UILabel)并制作它们并相应地重新对其进行重新分配。

我希望我足够清楚。

1 个答案:

答案 0 :(得分:1)

对于应该作为行对齐的两个标签,您可以使用CGRectGetMaxY功能。例如:

UILabel *first = [[UILabel alloc] initWithFrame:CGRectMake(10.0f,20.0f, 100.0f, 200.0f)];
[first setText:@"Text to display"];
[first sizeToFit];
[self.view addSubview:first];
[first release];

UILabel *second = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, CGRectGetMaxY(first.frame), 100.0f, 200.0f];
[second setText:@"Text to display"];
[second sizeToFit];
[self.view addSubview:second];
[second release];

UILabel *third = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, CGRectGetMaxY(second.frame), 100.0f, 200.0f];
[third setText:@"Text to display"];
etc...

您还可以根据文本参数知道标签的预期大小:

NSString *text = @"Text to display";
CGSize size = [text sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:10.0f] constrainedToSize:CGSizeMake(100.0f, FLT_MAX) lineBreakMode:UILineBreakModeTailTruncation];
UILabel *first = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 20.0f, 100.0f, size.height)];
[first setText:text];