Iphone 带有drawRect+;正常蓝色选择

Iphone 带有drawRect+;正常蓝色选择,iphone,ios,uitableview,Iphone,Ios,Uitableview,我有一个自定义UITableViewCell。所有绘图都是在drawRect:方法中完成的,不添加任何子视图。 绘图效果良好,滚动速度良好。 但问题在于选定的单元格。我希望选择的行为与正常情况类似: 蓝色渐变选择颜色 反转文本颜色 动画取消选择 我没有能够做到这三点 第一次尝试: 设置selectionStyle=UITableViewCellSelectionStyleNone并在drawRect方法中选择颜色。 使用这种方法,我能够实现前两件事,但取消选择是即时的。因此,前一秒它被选择为

我有一个自定义UITableViewCell。所有绘图都是在drawRect:方法中完成的,不添加任何子视图。 绘图效果良好,滚动速度良好。 但问题在于选定的单元格。我希望选择的行为与正常情况类似:

  • 蓝色渐变选择颜色
  • 反转文本颜色
  • 动画取消选择
我没有能够做到这三点

第一次尝试:
设置selectionStyle=UITableViewCellSelectionStyleNone并在drawRect方法中选择颜色。 使用这种方法,我能够实现前两件事,但取消选择是即时的。因此,前一秒它被选择为蓝色,下一秒它被取消选择。我没有得到好的淡出

第二次尝试:
selectionStyle=UITableViewCellSelectionStyleBlue 使用此方法,选中时,我的单元格都是渐变蓝色。我的文本不可见。不过,淡出效果很好

第三次尝试:
设置selectionStyle=UITableViewCellSelectionStyleBlue,并将selectedBackgroundView设置为UIView,其中我将backgroundColor设置为透明蓝色。 这里的问题是,selectedBackgroundView(尽管名称不同)是在我的正常内容之上绘制的。因此,如果selectedBackgroundView不透明,我就看不到文本。如果它是透明的,我可以看到文本,但是选择的颜色会“褪色”,看起来不对劲


实现这三个要点的正确方法是什么?

我建议将第二次尝试与手势识别器结合使用。检查用户是否按下单元格,如果是,请将该单元格中的textcolor设置为黄色(或者蓝色的反转是什么?xD)

示例代码:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if (touch.view isKindOfClass:[UIButton class]]) {
        //do something with that view, for example: 
        //change the color of the text in that view, 
        //or invert it ;)
        return YES;
    }
    return NO;
}
或者,您可以将UIgestureRecognitor附加到该按钮。这样,就可以在选择器中插入名为inserted的类


也许有更好的选择来满足你的要求。这是我刚想到的,如果你已经有2/3的分数了,这应该可以帮助你得到3/3

好的。所以我自己问题的答案。。。不要将自定义图形的UITableViewCell子类化。而是将UIImageView或UIView子类化

这篇文章很好地描述了如何做到这一点:

问题不在于文本颜色应该颠倒。它通常是黑色的,但也不可见。问题似乎是蓝色渐变不透明。我的单元格中还有一个图像,选中时也不可见。所以这个建议行不通。