我需要更改应用中所有单元格的选定单元格背景颜色。据我所知,有一种方法可以将UIAppearance
协议用于此目的。是否可以通过UITableViewCell
?
答案 0 :(得分:3)
使用外观代理可以为所有单元格着色。不知道你是否可以针对特定类别。
要在AppDelegate.m文件中执行以下代码着色:
放[self customCellBackground];
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions
在最后的某个地方:
- (void)customCellBackground {
UIView *cellBackgroundView =[[UIView alloc] init];
cellBackgroundView.backgroundColor = [UIColor blackColor];
[[UITableViewCell appearance] setSelectedBackgroundView:cellBackgroundView];}
答案 1 :(得分:3)
由于null的答案不适用于所选的单元格背景而且Armands L.的答案不能始终如一地工作对我来说(通过'用户点击选择单元格确实有效,但程序化单元格选择显示出奇怪的结果(有时选择的背景不可见,或者没有正确填充单元格的高度)。 ..)。
我找到了一个有效的自定义解决方案:
UITableViewCell
self.selectedBackgroundView
和init
UIColor
添加自定义UI_APPEARANCE_SELECTOR
属性以获取自定义所选背景颜色 .h
档案:
@property (nonatomic) UIColor* selectedCellBackgroundColor UI_APPEARANCE_SELECTOR;
.m
档案:
init
方法中的:
self.selectedBackgroundView = [[UIView alloc] init];
最后但并非最不重要的是颜色的setter函数:
- (void) setSelectedCellBackgroundColor:(UIColor*) color {
_selectedCellBackgroundColor = color;
self.selectedBackgroundView.backgroundColor = color;
}
答案 2 :(得分:0)
你不能直接指向UITableViewCell,但是你可以为contentView
执行此操作:
[[UIView appearanceWhenContainedIn:[UITableViewCell class], nil] setBackgroundColor:[UIColor redColor]];
请注意,它会更改所有子视图bg颜色。
另一个选择是使用UITableViewCell
标记编写UI_APPEARANCE_SELECTOR
的类别或子类,请检查此问题:
iOS: Using UIAppearance to define custom UITableViewCell color