Iphone UITableViewCellSeparatorStyleNone在UITableView中选择时不隐藏蓝色分隔线
在描述问题之前,让我首先指出,这是一个不同于其他问题的问题 问题 在tableView:didSelectRowAtIndexPath:中设置了一个中断,正如您在模拟器(图像最右侧)中看到的,在所选单元格的底部有一条单像素蓝线。这不是客户端要求的设计,也不是这个应用程序过去的行为:应该没有分隔符,即使在选择时也是如此 我是如何来到这里的 我最初使用自定义UITableViewCell类和相应的nib(.xib)文件设计了这个表视图,并且在选择上没有问题:分隔符按照需要隐藏。可以预见的是,由于视图层次结构的所有开销,滚动速度很慢,所以我修改了自定义单元格以使用Loren Brichter的。现在滚动速度快得多,但我无法摆脱我的生活分隔符 我尝试过的 在上面截图的时候Iphone UITableViewCellSeparatorStyleNone在UITableView中选择时不隐藏蓝色分隔线,iphone,objective-c,cocoa-touch,uitableview,separator,Iphone,Objective C,Cocoa Touch,Uitableview,Separator,在描述问题之前,让我首先指出,这是一个不同于其他问题的问题 问题 在tableView:didSelectRowAtIndexPath:中设置了一个中断,正如您在模拟器(图像最右侧)中看到的,在所选单元格的底部有一条单像素蓝线。这不是客户端要求的设计,也不是这个应用程序过去的行为:应该没有分隔符,即使在选择时也是如此 我是如何来到这里的 我最初使用自定义UITableViewCell类和相应的nib(.xib)文件设计了这个表视图,并且在选择上没有问题:分隔符按照需要隐藏。可以预见的是,由于视图
- 表视图在IB中有“分隔符[无]”
- 包含表视图的UIViewController在viewDid Load中有以下行:
self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone代码>
曼朱纳斯:这是我用来根据手机是否被触摸来绘制背景的代码。在屏幕截图中设置动画时,您可以看到细微差别
if(self.highlighted) {
textColor = [UIColor blackColor];
UIImage *bg = [UIImage imageNamed:@"image-cell-background_highlighted.png"];
[bg drawAtPoint:CGPointMake(0.0, 1.0)];
}
else {
UIImage *bg = [UIImage imageNamed:@"image-cell-background.png"];
[bg drawAtPoint:CGPointMake(0.0, 0.0)];
}
在drawContentView:
中的UIImageCell.m中调用它,该方法继承自Brichter先生的ABTableViewCell超类。请尝试以下操作:
[单元格设置选择样式:UITableViewCellSelectionStyleNone]强>
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = NSLocalizedString(@"Cell",@"");
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (nil == cell)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
}
试试这个:
[单元格设置选择样式:UITableViewCellSelectionStyleNone]强>
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = NSLocalizedString(@"Cell",@"");
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (nil == cell)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
}
克里斯
深入研究ABTableViewCell,我发现:
- (void)setFrame:(CGRect)f
{
[super setFrame:f];
CGRect b = [self bounds];
b.size.height -= 1; // leave room for the seperator line
[contentView setFrame:b];
}
由于单元的高度比实际单元短一个像素,因此当选择单元时,该像素线将在选择颜色的颜色中溢出。它看起来像是分隔符,但实际上是选择颜色
要进行测试,请尝试将上面的线条缩短两个像素或更多,以查看发生了什么
更新:
通过对FastScrollingExample项目的-rootViewController
进行此更改:
- (void)viewDidLoad
{
self.title = @"Fast Scrolling Example";
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[super viewDidLoad];
}
并指出:
// if(self.selected)
// {
// backgroundColor = [UIColor clearColor];
// textColor = [UIColor whiteColor];
// }
//
在-drawContentView
中,为了模拟如果没有显示选择颜色会发生的情况,我得到如下屏幕截图:
看起来眼熟吗
你会怎么处理这件事?如果不需要选择单元格,请禁用单元格选择。否则,如果要选择单元格,则应将矩形放大,以便在-drawcontrect
中使用自己的选择颜色绘制时,默认选择颜色不会显示出来
深入研究ABTableViewCell,我发现:
- (void)setFrame:(CGRect)f
{
[super setFrame:f];
CGRect b = [self bounds];
b.size.height -= 1; // leave room for the seperator line
[contentView setFrame:b];
}
由于单元的高度比实际单元短一个像素,因此当选择单元时,该像素线将在选择颜色的颜色中溢出。它看起来像是分隔符,但实际上是选择颜色
要进行测试,请尝试将上面的线条缩短两个像素或更多,以查看发生了什么
更新:
通过对FastScrollingExample项目的-rootViewController
进行此更改:
- (void)viewDidLoad
{
self.title = @"Fast Scrolling Example";
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[super viewDidLoad];
}
并指出:
// if(self.selected)
// {
// backgroundColor = [UIColor clearColor];
// textColor = [UIColor whiteColor];
// }
//
在-drawContentView
中,为了模拟如果没有显示选择颜色会发生的情况,我得到如下屏幕截图:
看起来眼熟吗
你会怎么处理这件事?如果不需要选择单元格,请禁用单元格选择。否则,如果要选择单元格,则应将rect变大,以便在
-drawcontrect
UITableViewCellSelectionStyleNone中使用自己的选择颜色进行绘制时,默认选择颜色不会显示出来。这样做的副作用是,使“我的图形代码”中的if语句永远不会计算为“是”。(请参阅上面的附加代码块。)虽然我更喜欢这里的无阻尼图形,但您的解决方案至少以UITableViewCellSelectionStyleGray的形式提供了一个不太显眼的选择覆盖。谢谢你,曼朱纳!UITableViewCellSelectionStyleNone有一个副作用,就是使我的图形代码中的if语句永远不会计算为YES。(请参阅上面的附加代码块。)虽然我更喜欢这里的无阻尼图形,但您的解决方案至少以UITableViewCellSelectionStyleGray的形式提供了一个不太显眼的选择覆盖。谢谢你,曼朱纳!啊,谢谢你,马布德!我期待着我或苹果的原因,但它是在ABTableViewCell。评论这句话就成功了<代码>//b.size.height-=1;//为分隔线留出空间啊,谢谢你,Mahboud!我期待着我或苹果的原因,但它是在ABTableViewCell。评论这句话就成功了<代码>//b.size.height-=1;//为分隔线留出空间