使用UIAppearance更改选定的单元格背景颜色

时间:2014-03-18 10:38:03

标签: ios objective-c uitableview uicolor uiappearance

我需要更改应用中所有单元格的选定单元格背景颜色。据我所知,有一种方法可以将UIAppearance协议用于此目的。是否可以通过UITableViewCell

的类别来实现这一点

3 个答案:

答案 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.的答案不能始终如一地工作对我来说(通过'用户点击选择单元格确实有效,但程序化单元格选择显示出奇怪的结果(有时选择的背景不可见,或者没有正确填充单元格的高度)。 ..)。

我找到了一个有效的自定义解决方案:

  1. 子类UITableViewCell
  2. self.selectedBackgroundView
  3. 中初始化init
  4. 使用UIColor添加自定义UI_APPEARANCE_SELECTOR属性以获取自定义所选背景颜色
  5. .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