我想知道如何更改UITableViewCell
的蓝色突出显示/选择颜色,任何想法?
答案 0 :(得分:209)
您可以通过多种方式更改高光颜色。
更改单元格的selectionStyle属性。如果您将其更改为UITableViewCellSelectionStyleGray
,则会显示为灰色。
更改selectedBackgroundView
属性。实际上创建蓝色渐变的是一个视图。您可以创建视图并绘制您喜欢的内容,并将视图用作表格视图单元格的背景。
答案 1 :(得分:142)
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
selectedBackgroundView
设置为我使用所选背景颜色创建的UIView
这对我很有用。 感谢Zonble提示。
答案 2 :(得分:30)
UITableViewCell
有三种默认选择样式: -
实施如下: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
答案 3 :(得分:17)
如果要在应用程序范围内更改它,可以将逻辑添加到App Delegate
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
}
答案 4 :(得分:15)
在Swift中,请在cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView
如果您希望每个UITableViewCell
的选择颜色相同,
在AppDelegate
。
let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView
答案 5 :(得分:11)
为了完整性:如果您创建了自己的UITableViewCell
子类,则可以实现- (void)setSelected:(BOOL)selected animated:(BOOL)animated
方法,并设置您在内容视图中添加的某个视图的背景颜色。 (如果是这种情况)或者contentView本身(如果它没有被你自己的观点覆盖。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected) {
self.contentView.backgroundColor = UIColor.blueColor;
} else {
self.contentView.backgroundColor = UIColor.whiteColor;
}
}
(没有使用?来适应源代码DIV的小宽度:)
这种方法比使用selectedBackgroundView有两个优点,它使用的内存更少,CPU使用量更少,除非你显示数百个单元格,否则你甚至不会注意到。
答案 6 :(得分:9)
我必须将选择样式设置为UITableViewCellSelectionStyleDefault
才能使用自定义背景颜色。如果是任何其他样式,将忽略自定义背景颜色。在iOS 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;
}
答案 7 :(得分:4)
Swift 3.0 / 4.0
如果您已创建自己的自定义单元格,则可以更改所有单元格的awakeFromNib()
上的选择颜色:
override func awakeFromNib() {
super.awakeFromNib()
let colorView = UIView()
colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)
self.selectedBackgroundView = colorView
}
答案 8 :(得分:3)
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
@IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
didSet {
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = selectedColor
}
}
}
在故事板中,将UITableViewCell的类设置为UIDesignableTableViewCell,在“属性”检查器中,您可以将单元格的选定颜色更改为任何颜色。
您可以将此功能用于所有细胞。 这就是您的属性检查器的外观。
答案 9 :(得分:3)
基于Tooltip
,您可以将此扩展名添加到应用程序代码中的任何位置,并直接在情节提要编辑器中为应用程序的每个单元格选择颜色:
// here you receive the response
switch result.response.statusCode {
case 200?:
if let data = result.data,
let questionResponse = try? JSONDecoder().decode(QuestionSetResponseModel.self,
from: data) {
// here you can access all the thing
if let questions = questionResponse.data {
for question in questions {
// here you got your question
if let options = question.options {
for option in options {
// here you get your options
}
}
}
}
}
default:
print("status code error")
}
答案 10 :(得分:0)