当前位置:  开发笔记 > 编程语言 > 正文

如何将UITableViewCellSelectionStyle属性设置为某种自定义颜色?

如何解决《如何将UITableViewCellSelectionStyle属性设置为某种自定义颜色?》经验,为你挑选了4个好方法。

我正在开发一个iPhone应用程序,在我的表视图中我想要Cell Selection Style的自定义颜色,我读了UITableViewCell类参考但是只有三个常量定义为Selection样式(Blue,Gray,None).我看到一个应用程序使用的颜色与参考中定义的颜色不同.

我们如何使用参考中定义的颜色以外的颜色?

提前致谢.



1> Matt Gallagh..:

设置选择的最佳方法是selectedBackgroundView在构造单元格时设置单元格.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.selectedBackgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectedCellBackground.png"]] autorelease];
    }

    // configure the cell
}

使用的图像应该有一个很好的渐变(如默认选择).如果你只想要一个平面颜色,你可以使用UIView而不是a UIImageView并设置backgroundColor你想要的颜色.

选择行后,将自动应用此背景.


分组样式表视图怎么样?我刚刚使用了一个矩形图像,它通过tableview单元格的圆形曲线显示出来.+1为一个很好的答案.
对于分组的tableview单元格,您需要4个背景 - 顶部,底部,中间和顶部和底部,您需要根据单元格在组中的位置应用它们.

2> 小智..:

设置selectedBackgroundView似乎当没有任何效果cell.selectionStyle设置为UITableViewCellSelectionStyleNone.当我没有设置样式时,只使用默认的灰色.

使用第一个将自定义UIView插入单元格的建议会操作单元格,但只有在完成所选操作后才会显示单元格,但是因为我正在推送到新视图.如何在单元格中选择要在所选操作开始之前显示的视图?


这是对的.我需要将selectionStyle设置为Blur或Gray.没有人会使它不起作用.无论如何,你可以通过覆盖`-setHighlited:animated:`UITableViewCell`类的方法来做到这一点.

3> Willster..:

如果您已经为UITableViewCell创建子类,则可以通过覆盖以下内容来自定义单元格的各种元素:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
    if(highlighted) {
        self.backgroundColor = [UIColor redColor];
    } else {
        self.backgroundColor = [UIColor clearColor];
    }

    [super setHighlighted:highlighted animated:animated];
}

编辑iOS7:正如Sasho所说,你也需要

cell.selectionStyle = UITableViewCellSelectionStyleNone



4> Charles Mars..:

我尝试了上面的一些,我实际上更喜欢创建自己的UITableViewCell子类,然后覆盖touchesBegan/touchesCancelled/touchesEnded方法.要执行此操作,请忽略单元格上的所有selectedBackgroundView和highlightedColor属性,而只需在调用上述方法之一时手动设置这些颜色.例如,如果要将单元格设置为具有红色文本的绿色背景,请尝试此操作(在自定义单元格子类中):

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //Set backgorund
    self.backgroundColor = [UIColor themeBlue];

    //Set text
    self.textLabel.textColor = [UIColor themeWhite];

    //Call super
    [super touchesBegan:touches withEvent:event];
}

请注意,为此,您需要设置:

self.selectionStyle = UITableViewCellSelectionStyleNone;

否则,您将首先获得当前的选择样式.

编辑:我建议使用touchesCancelled方法恢复原始单元格颜色,但只是忽略touchesEnded方法.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有