iOS - создайте пользовательскую UILabel и добавьте их в UIView - PullRequest
1 голос
/ 20 марта 2012

Я хочу добиться чего-то подобного в UIView:

enter image description here

Я создал пользовательскую UILabel с пользовательским методом init:

@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 ]

2 голосов
/ 20 марта 2012

В цикле 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 ...]

0 голосов
/ 20 марта 2012

Все они добавляются в одну и ту же позицию родительского представления

...