gpt4 book ai didi

iphone - UITableViewCell : How to prevent blue selection background w/o borking isSelected property?

转载 作者:IT老高 更新时间:2023-10-28 11:45:37 25 4
gpt4 key购买 nike

我有一个自定义的 UITableViewCell 子类。我已将单元格子类的 contentView 设置为一个自定义的 UIView 类,我在其中重写 -drawRect: 并在那里进行所有绘图。

另外,我设置 cell.contentView.opaque = NO 以在单元格的某些区域实现透明度(不幸的是,表格后面的背景图像必须通过某些部分的每个单元格显示达到风格效果。我知道这是对性能的影响。一定是这样)。

问题:当它被选中或突出显示(被按下)时,我仍然看到在我的单元格后面(在透明区域中)绘制了默认的漂亮蓝色渐变背景。这会遮挡 table 后面的图像,这很糟糕。

目标:防止出现蓝色渐变背景,但仍然能够从 -[ 中检查 cell.isSelectedcell.isHighlighted 属性MyContentView drawRect:] 来确定如何绘制我自己的自定义选择/突出显示。

我尝试过的:

  1. 设置 cell.selectionStyle = UITableViewCellSelectionStyleNone 具有防止漂亮的蓝色渐变选择背景的预期效果,但也可以防止 cell.isSelected正确设置 cell.isHighlighted 属性,这意味着我无法进行自己的自定义选择/突出显示绘图

  2. 在单元格的 -init-prepareForReuse 中设置 cell.selectionBackgroundView = nilcell.backgroundView = nil 方法不阻止蓝色渐变选择背景

  3. -[MyContentView -drawRect:]方法中设置cell.selectionBackgroundView = nil确实有想要的效果蓝色渐变选择背景,但这看起来很笨拙

  4. 覆盖 -[UITableViewCell setSelected:animated:] 为无操作。这没有防止蓝色渐变选择背景的预期效果

最佳答案

您还必须覆盖 setHighlighted: 以防止蓝色渐变显示。如果你只是覆盖 setHighlighted: 那么你最终会得到一个瞬间的选择效果。

所以你会有这两种方法:

- (void)setHighlighted: (BOOL)highlighted animated: (BOOL)animated
{
// don't highlight
}

- (void)setSelected: (BOOL)selected animated: (BOOL)animated
{
// don't select
//[super setSelected:selected animated:animated];
}

关于iphone - UITableViewCell : How to prevent blue selection background w/o borking isSelected property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899862/

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