iOS - 创建自定义UILabel并将其添加到UIView

时间:2012-03-20 16:53:53

标签: ios uiview uilabel subview

我想在UIView中实现类似的东西:

enter image description here

我使用自定义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代码,将背景颜色直接设置为背景,现在他们显示,现在我怎样才能使它们成为一个并且不重叠?

2 个答案:

答案 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)

它们都被添加到父视图的相同位置