2012-04-25 96 views
1

我有一个tableview,我希望自定义accessoryview按钮。 为此我有半透明像素的自定义PNG图像。如何将特定混合模式添加到自定义AccessoryView

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自定义我的accessoryview。

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

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

+0

是否可以发布图片 - 这两个Photoshop都显示你想要它看起来,并从应用程序显示它目前的样子?也就是说,你可能无法通过改变视图设置来做你想做的事情。如果您使用'CGBlendMode'手动绘制,您可以访问许多有用的合成效果。所以,你可以创建一个'UIView'子类,然后在它的'drawRect'方法中绘制一部分表背景,然后用你需要的混合模式绘制图像。跳过背景绘制步骤会很好,但是你可能不能。 – Dondragmer 2012-04-26 00:17:26

+0

@dondragmer感谢您的回复。我在主题中附上样本。看起来你是对的,唯一的办法就是做我想做的事是做你的建议:( – 2012-04-26 03:59:38

回答

1

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

有两个部分的解决方案:

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

无论哪种方式,你失去了灵活性;这将是很好的拖动你的按钮或改变背景图形,并将所有东西都很好地合并在一起。

这可能会改变。 CALayer已经有一个名为compositingFilter的属性。但是,从iOS 5.1开始,其行为未定义。如果有人在未来的iOS 确实有合成过滤器的工作,请添加注释这样说。

+0

Thanx。是的 - 左边是photoshop图片。右边是模拟器。第二个变种是最简单的,但它看起来不像它必须如果我这样做改变半透明的白色到半透明的棕色)然而它最容易做到的几乎是我想要的方式 – 2012-04-26 04:40:46

+0

为了得到我想要的我做的下一个改变重叠混合模式为默认。在那个区域是红棕色的,并添加一些声音,现在它在模拟器中看起来非常接近原始(第3张图片) – 2012-04-26 05:07:32

相关问题