Как сделать ячейку UITable с индикатором треугольника? - PullRequest
1 голос
/ 14 января 2011

В приложении Linked in iphone я заметил, что у них есть вид таблицы, см. Следующую картинку с треугольником, указывающим вверх.

alt text

Обратите внимание, что ячейка табличного представления имеет маленький треугольник, направленный вверх, и является частью ячейки табличного представления.

Треугольник является --- ^ --- частью изображения.

Мне интересно. Как создать UITableView с этим индикатором треугольника и как называется этот эффект?

Спасибо

Ответы [ 2 ]

5 голосов
/ 14 января 2011

Это по своему усмотрению.

Существует два подхода, которые вы можете использовать для этого:

  1. Установите стиль разделителя UITableView в none и добавьте UIImageView в UITableViewCell, которыйимеет разделительную линию и нарисованный треугольник. Я бы установил, что начало ячеек изображения будет отрицательным числом, равным высоте треугольника.Вы должны будете установить для свойства clipsToBounds значение NO для этого UIIMageView, а также для фонового представления ячейки и самой ячейки.

  2. В основном тот же подход, что и для 1, но вместо использованияUIImageView, я бы переопределил метод рисования в фоновом режиме и нарисовал линию, используя Quartz2D.

Кроме того, я не использую приложение LinkedIn, но эта область содержимого небудучи повторно использованным в другом месте или анимированным, вы можете сделать свою жизнь еще проще, комбинируя область над и под линией со стрелкой в ​​одном TableViewCell, и разделитель будет полностью косметическим, используя либо UIImageView, либо Quartz.

3 голосов
/ 14 января 2011

Вот код для этого, вам нужно иметь изображение, похожее на стрелку, и поместить следующий код в ваш метод CellForRowAtIndexPath ...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *celltype=@"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:celltype];


    for (UIView *view in cell.contentView.subviews) {
        [view removeFromSuperview];
    }
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];
        cell.accessoryType = UITableViewCellAccessoryNone;;
        cell.backgroundColor=[UIColor clearColor];
        UIImage *indicatorImage = [UIImage imageNamed:@"indicator.png"];
         cell.accessoryView =
         [[[UIImageView alloc]
         initWithImage:indicatorImage]
         autorelease];
}

    UILabel *dateValueLabel = [[UILabel alloc] initWithFrame:CGRectMake(170, 68, 140,20 )];
    dateValueLabel.textColor = [UIColor whiteColor];
    dateValueLabel.backgroundColor=[UIColor clearColor];
    dateValueLabel.text=[NSString stringWithFormat:@"%@",[[productArray objectAtIndex:indexPath.row]valueForKey:@"PostedDate"]];
    dateValueLabel.font=[UIFont systemFontOfSize:14];
    dateValueLabel.numberOfLines=3;
    dateValueLabel.adjustsFontSizeToFitWidth=YES;
    [dateValueLabel setLineBreakMode:UILineBreakModeCharacterWrap];
    [cell.contentView addSubview:dateValueLabel];
    [dateValueLabel release];


    return cell;

}

Надеюсь, это поможет вам. Я делаю это так .........

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...