如何将特定混合模式添加到自定义AccessoryView

时间:2012-04-25 04:17:57

标签: objective-c ios xcode

我有一个tableview,我希望自定义accessoryview按钮。 为此,我有自定义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格式导出该按钮时,它具有白色半透明像素,必须在相同重叠混合模式下与表格背景混合​​。但默认情况下,当我将其加载为UIImage以自定义我的附件视图时,默认情况下导出PNG混合。

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

it's photoshop view it's simulator view enter image description here

1 个答案:

答案 0 :(得分:1)

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

有两个部分解决方案:

  1. 拥有一个drawRect块(或其CALayer等效块),用于绘制背景并使用相应的CGBlendMode绘制光晕。
  2. 编辑图片,使底部的光线呈现当前背景的棕色。
  3. 无论哪种方式,你都失去了灵活性;将你的按钮拖动或改变背景图形并让所有东西很好地融合在一起会很不错。

    这可能会改变。 CALayer已有一个名为compositingFilter的属性。但是,从iOS 5.1开始,其行为未定义。如果有人在iOS 具有合成过滤器的未来读取此内容,请添加评论来说明。