我有一个 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 加载以自定义我的 accessoryview 时,导出的 PNG 在默认模式下混合。
如何更改 UIImage 或 UIButton 或 AccessoryView 的混合模式?
最佳答案
左边的图片是你在Photoshop中得到的吗?您想让它在不改变色调的情况下使背景变亮吗?如果是这样,就没有简单的方法来实现这一目标。
有两种部分解决方案:
- 有一个
drawRect
block (或其等效的CALayer
),它使用适当的CGBlendMode
绘制背景和光晕。 - 编辑图片,使底部的光晕成为当前背景的棕色阴影。
无论哪种方式,您都会失去灵 active ;拖动您的按钮或更改背景图形并将所有内容很好地融合在一起会很好。
这可能会改变。 CALayer
已经有一个名为 compositingFilter
的属性。然而,从 iOS 5.1 开始,它的行为是未定义的。如果有人在 iOS 确实有可用的合成过滤器的 future 读到这篇文章,请添加评论以说明这一点。
关于objective-c - 如何将特定混合模式添加到自定义 AccessoryView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10309289/