1

我有一个表格视图,我希望自定义附件视图按钮。为此,我有带有半透明像素的自定义 PNG 图像。

UIButton *myAccessoryButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
[myAccessoryButton setUserInteractionEnabled:YES];

[myAccessoryButton setBackgroundColor:[UIColor clearColor]];

[myAccessoryButton setImage:[UIImage imageNamed:@"accessory_btn"] forState:UIControlStateNormal];
[myAccessoryButton addTarget: self
                      action: @selector(accessoryButtonTapped:withEvent:)
            forControlEvents: UIControlEventTouchUpInside];

[cell setAccessoryView:myAccessoryButton];

这对我来说很好用按钮绘制,除了一个麻烦。在我的模板 (PSD) 中,此按钮具有混合模式 - 重叠,当我从 PSD 格式导出该按钮时,它具有白色半透明像素,必须以相同的重叠混合模式与表格背景混合​​。但默认情况下,当我将导出的 PNG 加载为 UIImage 以自定义我的附件视图时,它会在默认模式下混合。

如何更改 UIImage 或 UIButton 或 AccessoryView 的混合模式可能是?

这是 Photoshop 视图 这是模拟器视图 在此处输入图像描述

4

1 回答 1

1

左边的图片是你在 Photoshop 中得到的吗?您希望它在不改变色调的情况下使背景变亮吗?如果是这样,就没有简单的方法来实现这一目标。

有两种部分解决方案:

  1. 有一个单独的drawRect块(或其CALayer等效项)来绘制背景并使用适当的CGBlendMode.
  2. 编辑图片,使底部的辉光是当前背景的棕色阴影。

无论哪种方式,你都会失去灵活性;拖动按钮或更改背景图形并将所有内容很好地融合在一起会很好。

这可能会改变。 CALayer已经有一个名为compositingFilter. 但是,从 iOS 5.1 开始,它的行为是未定义的。如果将来有人在 iOS确实具有可以工作的合成过滤器的情况下阅读此内容,请添加评论以说明这一点。

于 2012-04-26T04:16:40.790 回答