gpt4 book ai didi

ios - 重写drawRect时突出显示自定义UITableViewCell

转载 作者:行者123 更新时间:2023-11-30 14:10:43 26 4
gpt4 key购买 nike

到目前为止,为了在点击单元格时给人一种突出显示单元格的错觉,它只是实现了 tableView:didSelectRowAtIndexPath: ,如下所示:

tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: false)
}

现在,我通过重写 drawRect 来自定义单元格 contentView(实际上是 contentView 的 subview )的呈现。问题是我的伎俩不再“奏效”了。

所以我考虑实现 tableView:didHighlightRowAtIndexPath:tableView:didUnhighlightRowAtIndexPath: 像这样:

override func drawRect(rect: CGRect) {
let context: CGContextRef = UIGraphicsGetCurrentContext()
let colors: [CGColor]!
if isHighlighted {
colors = [UIColor.blackColor().CGColor, UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1).CGColor]
} else {
colors = [UIColor.whiteColor().CGColor, UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1).CGColor]
}

let rect = self.bounds

GraphicHelper.drawLinearGradient(context, rect: rect, colors: colors)

let strokeRect = CGRectInset(rect, 1, 1)
CGContextSetStrokeColorWithColor(context, UIColor.whiteColor().CGColor)
CGContextSetLineWidth(context, 1)
CGContextStrokeRect(context, strokeRect)

let separatorColor = UIColor(red: 208/255, green: 208/255, blue: 208/255, alpha: 1).CGColor
let startPoint = CGPointMake(rect.origin.x, rect.origin.y + rect.size.height - 1)
let endPoint = CGPointMake(rect.origin.x + rect.size.width - 1, rect.origin.y + rect.size.height - 1)
GraphicHelper.drawStroke(context, startPoint: startPoint, endPoint: endPoint, color: separatorColor, width: 1)
}

它可以达到目的,但只能在“长时间”点击时完全无用,因为它不起作用或短暂点击。

关于如何实现这一目标有什么建议吗?

最佳答案

我的愚蠢想法

  1. UIImageView 放入自定义单元格内容 View 中以用作背景。 (设置白色或透明图像)

  2. didSelectRowAtIndexPath中更改UIImageView的图像并重置最后选定的单元格图像。

您还可以更改背景颜色。

关于ios - 重写drawRect时突出显示自定义UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31806958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com