Xcode 5.0,iOS 7并更新现有应用。 UITableView
所选行现在是灰色的,而不是蓝色。
根据我的阅读,他们将默认selectionStyle
更改为灰色。但“蓝色”仍然是IB中的一个选项,UITableViewCellSelectionStyleBlue
仍然存在。检查新的HIG,看起来他们不会删除蓝色和仍然使用蓝色单元格选择的“设置”应用程序。
我已尝试在IB和代码中设置值,但没有运气。关于我需要做些什么才能获得蓝色选择风格的想法?
答案 0 :(得分:57)
iOS7中只有一个selectionStyle,可以改变你需要手动执行此操作,如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
....
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:(76.0/255.0) green:(161.0/255.0) blue:(255.0/255.0) alpha:1.0]; // perfect color suggested by @mohamadHafez
bgColorView.layer.masksToBounds = YES;
cell.selectedBackgroundView = bgColorView;
....
return cell;
}
答案 1 :(得分:13)
我知道这已经得到了回答,但我想做的最后一件事就是触摸我所有的cellForRowAtIndexPath
方法。所以,我在App Delegate中使用了外观代理。我在上面使用了@ null的代码来设置所选的背景视图,并在我放置此代码的applicationDidFinishLaunching:withOptions:
方法中。
UIView *bgColorView = [[UIView alloc] init];
//the rest of null's code to make the view
[[UITableViewCell appearance] setSelectedBackgroundView:bgColorView];
然后使白色文字变亮:
[[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil] setHighlightedTextColor:[UIColor whiteColor]];
这使我的应用程序发生了全局变化。外观代理在iOS5中引入,Mattt有great article on how to use it at his NSHipster blog。
答案 2 :(得分:7)
可能它可以帮到你。我有我的自定义单元格,并使用所需颜色选择它我已覆盖setHighlighted和setSelected现在它看起来像那样
#define IOS_7 (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1 ? YES : NO)
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
[self changeSelectionColorForSelectedORHiglightedState:selected];
// Configure the view for the selected state
}
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
[super setHighlighted:highlighted animated:animated];
[self changeSelectionColorForSelectedORHiglightedState:highlighted];
}
- (void)changeSelectionColorForSelectedORHiglightedState:(BOOL)state
{
if (IOS_7) {
if (state) {
self.contentView.backgroundColor = [UIColor blueColor];
}
}
}
答案 3 :(得分:0)
我知道我参加派对的时间已经很晚了,但我也会提供IOS10的工作。请勿触摸任何其他代码,但请添加:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor blueColor];
cell.textLabel.textColor = [UIColor whiteColor];
... whatever else you do ...
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor whiteColor];
cell.textLabel.textColor = [UIColor blackColor];
}