根据拍摄的内容,配件视图的“突出显示”颜色不同?

时间:2012-12-14 15:33:37

标签: objective-c cocoa-touch ios5

我的设计师提出了一个有点棘手的设计。在tableView中,他们想要我
1)有一个定制的附件视图 - (UIButton子视图) - DONE
2)给自拍单元配件提供自定义动作(没有将detailView推送到导航堆栈,但其他东西) - DONE

现在是棘手的部分。


1)如果我点击单元格,附件视图应显示“highlightedBackground”。
2)如果我点击附件视图,则只有附件视图应突出显示,但带有“alternativeHighlightedBackground”。

所以回顾一下,对于accessoryView,我们有正常的背景和两个不同的突出显示背景,这取决于是否点击了整个单元格,或者只是轻拍了附件视图。

目前,我正在将一个UIButton作为子视图添加到cellForRowAtIndexPath中的附件视图中,该视图用作自定义附件。显然,附件视图将触摸事件传递给按钮,并且按钮以相同的背景突出显示,无论被点击的是什么。 此单元格不是自定义的,它是一个普通的UITableViewCell实例。 SDK是iOS5,遗憾的是没有iOS6可以使用。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我会放弃附件视图路径,并创建UITableViewCell的子类。只需在init函数中创建您的按钮,将其作为子视图添加到单元格的contentView,将按钮的触摸操作设置为您想要的,然后使用看起来的内容覆盖layoutSubviews像这样:

- (void)layoutSubviews
{
    [super layoutSubviews];

    CGRect bounds = self.contentView.bounds;

    CGFloat buttonOriginX = self.contentView.bounds.size.width - BUTTON_WIDTH - PAD;
    CGFloat buttonOriginY = floorf((bounds.size.height - BUTTON_HEIGHT)/2.0)+1;

    self.mybutton.frame = CGRectMake(buttonOriginX, buttonOriginY, BUTTON_WIDTH, BUTTON_HEIGHT );
}

按钮将在此单元格之前拦截触摸。然后,您可以完全控制按钮在触摸时显示的内容(设置设置为高亮状态图像)。