Мне интересно, как изменить синий цвет подсветки/выбора UITableViewCell
, любые идеи?Как изменить синий цвет подсветки UITableViewCell?
ответ
Вы можете изменить цвет подсветки несколькими способами.
Изменить свойство selectionStyle вашей ячейки. Если вы измените его на
UITableViewCellSelectionStyleGray
, он будет серым.Изменить
selectedBackgroundView
Недвижимость. Фактически, что создает синий градиент, это вид. Вы можете создать представление и нарисовать то, что вам нравится, и использовать представление в качестве фона ваших ячеек просмотра таблицы.
UITableViewCell
имеет три стиля выбора по умолчанию: -
- Синий
- Серый
- None
Реализация заключается в следующем: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
, а не эти три стиля по умолчанию, мы также можем настроить для нашего ожидаемого стиля свойство selectedBackgroundView. –
Работал для меня ... Спасибо тонну. –
Zonble уже предоставил отличный ответ. Я подумал, что может быть полезно включить короткий фрагмент кода для добавления UIView
в ячейку tableview, которая будет отображаться в качестве выбранного фонового представления.
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
UIView *selectionColor = [[UIView alloc] init];
selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1];
cell.selectedBackgroundView = selectionColor;
- клетка мой
UITableViewCell
- Я создал UIView и установить цвет фона, используя RGB цвета (светло-серый)
- Затем я ячейку
selectedBackgroundView
бытьUIView
, что я создал с моим выбранный цвет фона
Это хорошо сработало для меня. Спасибо за отзыв Zonble.
Это не очень хорошо работает, если используя таблицы с разделами. Когда выбрано, ячейка потеряет границы и не будет округлена при первой или последней ячейке. –
@kirk, вы имеете в виду группировку :) – Tieme
@Tieme, нет, я имею в виду [разделы] (http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html): «Вид таблицы состоит из нуля или более разделов, каждый со своими собственными строками». –
Если вы хотите изменить это приложение широко, вы можете добавить логику к вашему App делегату
class AppDelegate: UIResponder, UIApplicationDelegate {
//... truncated
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
// set up your background color view
let colorView = UIView()
colorView.backgroundColor = UIColor.yellowColor()
// use UITableViewCell.appearance() to configure
// the default appearance of all UITableViewCells in your app
UITableViewCell.appearance().selectedBackgroundView = colorView
return true
}
//... truncated
}
Отлично. Любая идея, как установить цвет текста этой ячейки по умолчанию на выбор? – BananaAcid
это работает, но затем выбор удаляется непосредственно при нажатии нового контроллера вида. – bobmoff
Хороший способ сделать глобальные изменения в UITableViewCell – Shashi3456643
Я должен установить стиль выбора для UITableViewCellSelectionStyleDefault
для пользовательского цвета фона для работы. Если какой-либо другой стиль, пользовательский цвет фона будет проигнорирован. Проверено на прошивке 8.
Полный код для ячейки следующим образом:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// This is how you change the background color
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];
return cell;
}
для полноты: если вы создали свой собственный подкласс UITableViewCell вы можете реализовать - (Недействительный) setSelected: (BOOL), выбранный анимированный: (BOOL) анимированный метод и установите цвет фона некоторого вида, добавленного в представление содержимого. (Если это имеет место) или самого contentView (если она не покрыта одним из ваших собственных взглядов.
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected) {
self.contentView.backgroundColor = UIColor.blueColor;
} else {
self.contentView.backgroundColor = UIColor.whiteColor;
}
}
(не использовать?чтобы соответствовать малой ширине исходного кода DIV :)
Этот подход имеет два преимущества по сравнению с использованием selectedBackgroundView, он использует меньше памяти и немного меньше CPU, а не то, что вы даже заметили бы, если бы не отображали сотни ячеек.
Это работает только после того, как новый вид присваивается 'selectedBackgroundView'. В самом начале метода добавьте' self. selectedBackgroundView = [UIView new]; ' – enadun
В Swift, используйте это в cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = UIColor.white
cell.selectedBackgroundView = selectedView
Если вы хотите, чтобы ваш выбор цветовой быть одинаковым в каждом использовании UITableViewCell
, это в AppDelegate
.
let selectedView = UIView()
selectedView.backgroundColor = UIColor.white
UITableViewCell.appearance().selectedBackgroundView = selectedView
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
@IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
didSet {
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = selectedColor
}
}
}
В раскадровке, установить класс вашего UITableViewCell к UIDesignableTableViewCell на инспекторе атрибутов, вы можете изменить выбранный цвет вашей ячейки в любой цвет.
Вы можете использовать это для всех своих ячеек. Вот как выглядит ваш инспектор Attributes.
Очень креативный! Великий! –
Swift 3,0/4,0
Если вы создали свою собственную ячейку можно изменить цвет выделения на awakeFromNib()
для всех клеток:
override func awakeFromNib() {
super.awakeFromNib()
let colorView = UIView()
colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)
self.selectedBackgroundView = colorView
}
круто, найденных хорошее объяснение и пример здесь: http: //cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html –
Я понял, что в IB вы не можете установить UITableViewCell «Selectio n "до" None "- потому что' selectedBackgroundView' будет тогда просто никогда не появляться. Только после установки «Выбор» по умолчанию появляется «selectedBackgroundView». Протестировано на iOS 6 и 7. – Jonny
Спасибо за замечание! Это делает его настолько простым: вы создаете новый вид (нет необходимости даже указывать фрейм: 'cell.selectedBackgroundView = [UIView new];' и вы устанавливаете любой цвет, который вы хотите: 'cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex : @ "ecf2f5" иAlpha: 1]; ' –