Как сделать UITableViewCell с 2 метками разного цвета? - PullRequest
6 голосов
/ 19 октября 2011

Я бы хотел, чтобы UITableViewCell был таким:

enter image description here

Цвет текста «Tel:» должен отличаться от цвета текста числа. Сейчас я устанавливаю текст в ячейку как обычно:

cell.textLabel.text=@"Something";

Возможно ли иметь 1 ярлык и изменить цвет некоторых его частей?

Как сделать ячейку таблицы такой же, как на моей картинке?

Спасибо.

Ответы [ 5 ]

8 голосов
/ 19 октября 2011

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

Запишите это в методе cellForRowAtIndexPath.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

    static NSString *CellIdentifier = @"Cell";  
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    for(UIView *eachView in [cell subviews])
        [eachView removeFromSuperview];

    //Initialize Label
    UILabel *lbl1 = [[UILabel alloc]initWithFrame:YOURFRAME];
    [lbl1 setFont:[UIFont fontWithName:@"FontName" size:12.0]];
    [lbl1 setTextColor:[UIColor grayColor]];
    lbl1.text = YOUR CELL TEXT;
    [cell addSubview:lbl1];
    [lbl1 release];

    UILabel *lbl2 = [[UILabel alloc]initWithFrame:YOURFRAME];
    [lbl2 setFont:[UIFont fontWithName:@"FontName" size:12.0]];
    [lbl2 setTextColor:[UIColor blackColor]];
    lbl2.text = YOUR CELL TEXT;
    [cel2 addSubview:lbl2];
    [lbl2 release];

    return cell;
}

UPDATE:

Наряду с этим вы также можете создать пользовательскую ячейку, определив здесь

Счастливое кодирование ..

5 голосов
/ 20 октября 2011

многие используют технику добавления меток в качестве подпредставлений ячейки, и, возможно, вы столкнетесь с неожиданными результатами при повторном использовании ячеек. Apple уже предлагает шаблоны, которые можно настроить в каждом аспекте. В вашем случае, без использования пользовательских ячеек и без добавления меток, я бы использовал шаблон UITableViewCellStyleValue2, вы можете играть с существующими метками и accessoryView, такими как cell.textLabel, cell.detailTextLabel и cell.accessoryView, см. Этот фрагмент, который более или менее эмулирует ваш интерфейс:

- (UITableViewCell *)tableView:(UITableView *)tableView 
                     cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString *CellID = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellID];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 
        reuseIdentifier:CellIdentifier] autorelease];
    }

        cell.textLabel.contentMode=UIViewContentModeScaleToFill;
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.baselineAdjustment=UIBaselineAdjustmentAlignCenters;
        cell.textLabel.textAlignment=UITextAlignmentCenter;
        cell.textLabel.font=[UIFont boldSystemFontOfSize:22];
        cell.textLabel.textColor=[UIColor lightGrayColor];

        cell.detailTextLabel.contentMode=UIViewContentModeScaleToFill;
        cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.detailTextLabel.baselineAdjustment=UIBaselineAdjustmentAlignCenters;
        cell.detailTextLabel.textAlignment=UITextAlignmentLeft;
        cell.detailTextLabel.font=[UIFont boldSystemFontOfSize:23];
        cell.detailTextLabel.textColor=[UIColor blackColor];

        cell.textLabel.text=@"Tel.:";
        cell.detailTextLabel.text=@"+3912345678";

        UIImageView *imageView = [[UIImageView alloc] initWithImage:
                                  [UIImage imageNamed:@"phone.png"]];
        cell.accessoryView = imageView;
        [imageView release];
        return cell;
}

Надеюсь, это поможет.

4 голосов
/ 19 октября 2011

единственный способ - добавить новые метки как подпредставление с разными цветами в качестве фона.

0 голосов
/ 19 октября 2011

Невозможно изменить шрифт или цвет для частей UILabel.Самый простой способ здесь - создать подкласс ячейки и добавить две метки либо в конструктор интерфейса, либо в код. В этом посте показано, как рассчитать размер текста в метке, чтобы можно было динамически регулировать размер метки, если вы хотите, чтобы текст двух меток был «слипшимся».

0 голосов
/ 19 октября 2011

Либо перейдите с пользовательской ячейкой и инициализируйте согласно требованию, либо вы можете использовать UITableviewCell и добавить несколько UILabel согласно желаемым форматам.

Например ...,

static NSString *MyIdentifier =@"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil) 
{       
    cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier];     
}

UILabel *lblPhone = [[UILabel alloc] initwithFrame:CGRectMake(5, 5, 150, 30)];
lblPhone.text = @"Tel.";
[cell addSubView: lblPhone];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...