Необходимо изменить цвет выделения в виде таблицы
Вопрос
Мне нужно изменить выбор синего цвета по умолчанию в табличном представлении на какой-нибудь пользовательский цвет.Есть ли какой-нибудь способ сделать это?Помоги мне
Решение
Лучший способ сделать это вот так:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"myCellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UIView *v = [[[UIView alloc] init] autorelease];
v.backgroundColor = [UIColor redColor];
cell.selectedBackgroundView = v;
}
// Set up the cell...
cell.textLabel.text = @"foo";
return cell;
}
Важной частью для вас является cell.selectedBackgroundView = v;
инструкция.Вы можете заменить самый простой вид "v" здесь любым видом, который вам нравится.
Другие советы
Я также столкнулся с этой проблемой при попытке создать пользовательские виды выбранных ячеек для сгруппированной ячейки.Я решил эту проблему, создав 3 типа изображений для верхней, средней и нижней ячеек, предполагая, что там будет средняя ячейка.
NSString *imageFile;
if (row == 0) {
imageFile = @"highlighted_cell_top.png";
} else if (row == ([registeredDetailsKeys count] - 1)) {
imageFile = @"highlighted_cell_bottom.png";
} else {
imageFile = @"highlighted_cell_middle.png";
}
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageFile]];
cell.selectedBackgroundView = imageView;
Возможно, есть более простой способ, но я доволен результатом.
Я не думаю, что вы можете использовать пользовательский цвет.Однако вы можете использовать следующее свойство UITableViewCell
@property(nonatomic) UITableViewCellSelectionStyle selectionStyle
Стиль выделения - это константа backgroundView, которая определяет цвет ячейки при ее выделении.Значением по умолчанию является UITableViewCellSelectionStyleBlue.С тех пор как
typedef enum {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;
вы можете переключиться с синего цвета по умолчанию на серый или вообще не выбирать цвет.
Убедитесь, что после того, как вы объявите в заголовке
@property(nonatomic) UITableViewCellSelectionStyle selectionStyle
Реализовать
cell.selectionStyle = UITableViewCellSelectionStyleGray
где UITableViewCellSelectionStyleGray
может быть UITableViewCellSelectionStyleNone
, UITableViewCellSelectionStyleBlue
, UITableViewCellSelectionStyleGray
.
Другой способ сделать это - переместить вашу ячейку в новый вид с любым цветом, который вы хотите, и непрозрачностью около 50%.Вы перемещаете этот вид в ячейку, когда получаете -setSelected:анимированный:звони.Когда я говорю "переместить", вы на самом деле всегда можете иметь вид поверх своей камеры, но просто выключайте и включайте скрытую часть по мере необходимости.