我想在UIView中实现类似的东西:
我使用自定义init方法创建了一个自定义UILabel:
@implementation TagLabel
- (id)init {
self = [super initWithFrame:CGRectMake(0, 0, 100, 40)];
if (self) {
self.layer.borderColor = [UIColor whiteColor].CGColor;
self.layer.borderWidth = 4.0;
self.layer.cornerRadius = 4;
self.backgroundColor = [UIColor greenColor];
self.textColor = [UIColor whiteColor];
self.textAlignment = UITextAlignmentCenter;
}
return self;
}
@end
我创建并将每个标签添加到视图中,如下所示:
for (NSDictionary *tag in [self.voicenote objectForKey:@"Tag"]) {
TagLabel *tagLabel = [[TagLabel alloc] init];
tagLabel.text = [tag objectForKey:@"tag"];
[self.tagsView addSubview:tagLabel];
}
然而我得到的只是一片空白的UIView,我错过了什么?是否有更好的方法来实现这一目标?
编辑:解决了一个问题,修改了UILabel代码,将背景颜色直接设置为背景,现在他们显示,现在我怎样才能使它们成为一个并且不重叠?
答案 0 :(得分:2)
在for循环中,您需要为标签制作自定义框架,并按照您想要的方式进行排列。 这样的事情可能是:
CGRect frame = label.frame;
frame.size.height = masterFrame.height;
frame.origin.y = masterFrame.origin.y + masterFrame.size.height + 40;
label.frame = frame;
这是一个更长的方法。您也可以使用[CGRect initWithFrame ...]
初始化帧答案 1 :(得分:0)
它们都被添加到父视图的相同位置