【发布时间】:2012-12-05 18:06:02
【问题描述】:
我有一个自定义的UITableViewCell 子类。我已将单元格子类的 contentView 设置为
一个自定义的UIView 类,我在其中覆盖-drawRect: 并在那里完成所有绘图。
另外,我设置cell.contentView.opaque = NO 是为了在单元格的某些区域实现透明度(不幸的是,表格后面的背景图像必须通过某些部分的每个单元格显示以达到风格效果。我知道这是一个性能下降。一定是这样)。
问题:当它被选中或突出显示(被按下)时,我仍然看到在我的单元格后面(在透明区域中)绘制了默认的漂亮蓝色渐变背景。这会遮挡桌子后面的图像,这很糟糕。
目标:防止出现蓝色渐变背景,但仍然能够从-[MyContentView drawRect:] 中检查cell.isSelected 和cell.isHighlighted 属性以确定如何绘制我自己的自定义选择/突出显示。
我尝试过的:
设置
cell.selectionStyle = UITableViewCellSelectionStyleNone具有防止漂亮的蓝色渐变选择背景的预期效果,但也防止正确设置cell.isSelected和cell.isHighlighted属性,这意味着我无法进行自己的自定义选择/高亮绘图在单元格的
-init或-prepareForReuse方法中设置cell.selectionBackgroundView = nil和cell.backgroundView = nil不会阻止蓝色渐变选择背景在
-[MyContentView -drawRect:]方法中设置cell.selectionBackgroundView = nil确实具有防止蓝色渐变选择背景的预期效果,但这看起来很笨拙覆盖 -[UITableViewCell setSelected:animated:] 为无操作。这没有防止蓝色渐变选择背景的预期效果
【问题讨论】:
标签: iphone objective-c cocoa-touch uikit