Как установить цвет «верхней» границы на сгруппированных UITableViewCells? - PullRequest
3 голосов
/ 30 ноября 2011

Я использовал -[UITableView setSeparatorColor:], чтобы установить красную рамку на прикрепленном изображении.Но как мне установить цвет рамки, отображаемой как белый?

enter image description here

РЕДАКТИРОВАТЬ: Я знаю, что могу использовать стиль UITableViewSeparatorStyleSingleLine, чтобы получитьизбавиться от белого цвета целиком.Но я не хочу этого делать: я хочу изменить его цвет.Спасибо!

Ответы [ 5 ]

5 голосов
/ 07 декабря 2011

Белый цвет, потому что стиль разделителя установлен на Однолинейный. Если вы измените его на Однострочный, белые линии исчезнут. Не уверен, решит ли это вашу проблему, но я не думаю, что вы меняете цвет, не выполняя больше работы.

4 голосов
/ 08 декабря 2011

Попробуйте сделать «вид линии» для ячеек.Поэтому в cellForRowAtIndexPath: метод просто добавьте это в нужную ячейку:

UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, 1)] autorelease];
lineView.backgroundColor = [UIColor whiteColor];
lineView.autoresizingMask = 0x3f;
[cell.contentView addSubview:lineView];

, которая добавит эту белую линию в верхнюю часть каждой ячейки.Если вы не хотите, чтобы это было в первой строке, добавьте оператор if:

if (indexPath.row != 0)
{
  UIView *lineView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.bounds.size.width, 1)] autorelease];
  lineView.backgroundColor = [UIColor whiteColor];
  lineView.autoresizingMask = 0x3f;
  [cell.contentView addSubview:lineView];
}

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

2 голосов
/ 05 декабря 2011

Просто посмотрите, может ли эта ссылка помочь вам.

Изменение цвета границы в ячейках iPhone UITableView (не сгруппированных)

Я думаю, что это решило ту же проблемуВы имеете в виду.

1 голос
/ 09 декабря 2011

Вы пытаетесь изменить пользовательский интерфейс iOS по умолчанию, но это изменение настолько сложное, что его невозможно выполнить со свойствами по умолчанию.

Какое решение?Просто удалите линии, нарисованные UITableVie (устанавливая цвет [UIColor clearColor]), и настройте фон UITableViewCell.

Конечно, вам нужно 3 типа фона - для первой ячейки, для последней ячейки и для серединыиз них:


- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath (NSIndexPath*)indexPath {  
    UITableViewCell* cell = [...];

    UIView* background;

    if (indexPath.row == 0) {
        background = [...]; //background for the first cell
    }
    else if (indexPath.row + 1 == [self tableView:tableView numberOfRowsInSection:indexPath.section]) {
        background = [...]; //background for the last cell
    }
    else {
        background = [...]; //background for the middle cells
    }

    cell.backgroundView = background;
}

Вопрос в том, как создать фон.Обычно я просто использую UIImageView или комбинацию нескольких UIImageView (закругленный угол как одно изображение и линии как изображения с изменяемым размером).

0 голосов
/ 09 декабря 2011

Вы не можете.

Этот встроенный чертеж специфичен для tableView сгруппированного стиля и не может быть изменен (насколько мне известно ...)

Есть обходной путь к этому (мы использовали -> извините, нет исходного кода), но я думаю, вам это не понравится:

1 / иметь информацию о положении каждой ячейки 2 / чтобы заново реализовать рисование фона КАЖДОЙ ячейки, в зависимости от ее положения (поэтому вы должны сохранить эту позицию: FirstCell , MiddleCell , LastCell ,) воспроизвести сгруппированный вид tableView.

Способ сделать это с помощью CoreGraphics:

Из вашего подкласса CellGroupedBackgroundView (или customGroupedTableViewCell , в зависимости от выбранного дизайна) вы создаете 2 практически идентичных слоя CAShapeLayers. Каждый для каждого цвета разделителя. И вы выставите эти цвета как свойства вашего CellGroupedBackgroundView .

Вы устанавливаете путь этих слоев в зависимости от установленного свойства position (используя только CGPathAddLineToPoint для средних ячеек и CGPathAddArcToPoint для первой и последней ячеек)

2 / используйте созданный пользовательский backgroundView на обычном UITableView, устанавливая положение каждой ячейки в соответствии с ее indexPath ...

Удачи:)

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