2010-09-28 3 views
3

У меня есть список элементов, которые я хотел бы показать в UITableViewCell. Прямо сейчас, я просто использую cell.textLabel с запятыми, разделяющими каждое значение, но я бы хотел сделать что-то более динамичное.Как отобразить массив UILabels?

Как бы я мог добиться чего-то подобного? alt text

Будет ли это массив UILabels с границами и радиусом на этих границах?

Спасибо за ваши идеи.

ответ

1

Вот возможный быстрый и простой способ сделать это. Он основан на коде, который вы можете получить here.

Обратите внимание, что вам необходимо добавить структуру QuartzCore в свой проект и включить в файл, где вы пишете этот код!

Каждый UIView поддерживается CALayer. Вы можете попасть в CALayer UIView с свойством .layer. Так как UILabel является UIView, вы можете получить его поддерживающий слой таким образом. Когда у вас есть слой подложки, вы можете установить его свойства backgroundColor, cornerRadius, borderColor и borderWidth. Это должно позволить вам создать эффект округления.

Чтобы получить центрированный эффект, попробуйте настроить UILabel textAlignment на UITextAlignmentCenter. Затем вы можете попробовать установить кадр UILabel на основе sizeThatFits или, может быть, основываться на вызове sizeWithFont на строку, которую вы помещаете в метку.

Вот вам быстрый, полностью непроверенный код, чтобы вы начали.

Предположим, что где-то вы инициализировали UIFont следующим образом (введите любой размер, необходимый для шрифта).

labelFont = [UIFont systemFontOfSize:14]; 

Затем для каждой метки, установите его в качестве follows.I'm предполагая, что вы вытащил текст из массива и поместить в переменную под названием «Текст». X_PADDING и Y_PADDING - это то расстояние между текстом ярлыка, которое вам нужно. xLoc и yLoc - это переменные, которые вы используете для отслеживания позиции x и y, на которую вы хотите поместить метки. Вы, вероятно, увеличит xLoc на основе TextSize + X_PADDING + LABEL_SPACING или что-то (где вы определяете LABEL_SPACING):

CGSize textSize = [text sizeWithFont:labelFont]; 
CGRect frame = CGRectMake(xLoc, yLoc, 
          textSize.width + X_PADDING, 
          textSize.height + Y_PADDING); 
UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.text = text; 
label.textAlignment = UITextAlignmentCenter; 

CALayer *layer = label.layer; 
layer.masksToBounds = YES; 
layer.cornerRadius = 7.0; // or whatever works for you 
layer.borderWidth = 1.0; 
layer.borderColor = [[UIColor redColor].CGColor; 
layer.backgroundColor = [UIColor blueColor].CGColor; 

// Add the layer into its superview 
[yourSuperview addSubview:label]; 

Я надеюсь, что это поможет вам начать работу.

+0

Спасибо! реализованы здесь как кнопки с несколькими визуальными настройками! http: //stackoverflow.com/questions/4941940/best-way-to-avoid-memory-leaks-for-multiple-buttons-in-uitableviewcell – monotreme

Смежные вопросы