Tod*_*orf 38 iphone cocoa-touch objective-c uikit
我有一个自定义UITableViewCell
子类.我已经将contentView
我的单元子类设置为一个自定义UIView
类,我在其中重写-drawRect:
并完成所有绘图.
此外,我设置cell.contentView.opaque = NO
的目的是为了在单元格的某些区域实现透明度(不幸的是,桌子背后的背景图像必须通过某些部分的每个单元格来显示以获得风格效果.我知道这是一个性能损失.它必须是所以).
问题:当我选择或突出显示(按下)时,我仍会看到在我的单元格后面(在透明区域中)绘制默认的漂亮蓝色渐变背景.这会遮挡桌子后面的图像,这很糟糕.
目标:为了防止蓝色渐变背景出现,但仍然能够从内部检查cell.isSelected
和cell.isHighlighted
属性-[MyContentView drawRect:]
以确定如何绘制我自己的自定义选择/突出显示.
我尝试过的:
设置cell.selectionStyle = UITableViewCellSelectionStyleNone
具有防止漂亮的蓝色渐变选择背景的所需效果,但也防止cell.isSelected
和cell.isHighlighted
属性被正确设置,这意味着我无法自己做自定义选择/高亮显示绘图
设置cell.selectionBackgroundView = nil
和cell.backgroundView = nil
单元格-init
或-prepareForReuse
方法中的设置不会阻止蓝色渐变选择背景
设置cell.selectionBackgroundView = nil
在-[MyContentView -drawRect:]
方法确实具有防止蓝色梯度选择背景的所希望的效果,但是,似乎非常janky
覆盖 - [UITableViewCell setSelected:animated:]为无操作.这不具有防止蓝色渐变选择背景的期望效果
jes*_*rry 68
您还必须覆盖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];
}
Run Code Online (Sandbox Code Playgroud)
Mug*_*nth 61
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 47
Matt Gallagher 在这篇文章中提供了一个关于定制UITableViews的优秀资源.你想要做的是将selectedBackgroundView设置为透明或UIImageView的新视图(而不是nil).
归档时间: |
|
查看次数: |
31268 次 |
最近记录: |