添加多个UILabel,每个标签都有可变线

时间:2013-01-13 00:54:40

标签: iphone ios objective-c xcode

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

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的设定距离以编程方式在此标签下添加另一个标签的最简单方法是什么?

2 个答案:

答案 0 :(得分: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

设置下一个标签的帧

答案 1 :(得分:1)

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

更改此属性的值:

@property (nonatomic) CGSize itemSize;

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

@property (nonatomic) CGFloat minimumLineSpacing;

处理项目之间的差距。