2

我有一个视图,我想要一组标签,但标签的数量和每个标签的文本长度各不相同。

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 50)];
label.text = @"Varying text length here";
label.numberOfLines = 0;
[label sizeToFit];
[[self view] addSubview:label];

当标签可能有 1-4 行之间时,以编程方式在该标签下方以 25 的设定距离添加另一个标签的最简单方法是什么?

4

2 回答 2

5

试试这个:

CGFloat offset = 25.0f;

CGRect frame1 = CGRectMake(10, 100, 30, 50);

UILabel *label = [[UILabel alloc] initWithFrame:frame1];
label.text = @"Varying text length here";
label.numberOfLines = 0;
[label sizeToFit];
[[self view] addSubview:label];

CGRect frame2 = CGRectMake(10,
                           label.frame.origin.y + label.frame.size.height + offset,
                           300,
                           50);

UILabel *label2 = [[UILabel alloc] initWithFrame:frame2];
label2.text = @"Varying text length here";
label2.numberOfLines = 0;
[label2 sizeToFit];
[[self view] addSubview:label2];

根据前一个标签的帧+ 25设置下一个标签的帧

于 2013-01-13T01:17:03.460 回答
1

看看UICollectionViewFlowLayout。它处理元素网格,这正是您想要的。

更改此属性的值:

@property (nonatomic) CGSize itemSize;

指定每个项目的大小(在您的情况下为 300,50)。还有这个:

@property (nonatomic) CGFloat minimumLineSpacing;

处理物品之间的间隙。

于 2013-01-13T01:08:12.360 回答