Objective c 如何将特定混合模式添加到自定义AccessoryView
我有一个tableview,我希望自定义accessoryview按钮。 为此,我有一个半透明像素的自定义PNG图像Objective c 如何将特定混合模式添加到自定义AccessoryView,objective-c,ios,xcode,Objective C,Ios,Xcode,我有一个tableview,我希望自定义accessoryview按钮。 为此,我有一个半透明像素的自定义PNG图像 UIButton *myAccessoryButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)]; [myAccessoryButton setUserInteractionEnabled:YES]; [myAccessoryButton setBackgroundColor:[UIColor cle
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的混合模式
左边的图片是你在Photoshop中看到的吗?您希望它在不改变色调的情况下使背景变亮吗?如果是这样的话,要做到这一点是不容易的 有两种局部解决方案:
drawRect
块(或其CALayer
等效块)绘制背景,并使用相应的CGBlendMode
绘制辉光这可能会改变
CALayer
已经有一个名为compositingFilter
的属性。但是,从iOS 5.1开始,其行为尚未定义。如果将来有人读到这篇文章时,iOS确实有可以使用的合成过滤器,请添加评论。左边的图片是你在Photoshop中看到的吗?您希望它在不改变色调的情况下使背景变亮吗?如果是这样的话,要做到这一点是不容易的
有两种局部解决方案:
drawRect
块(或其CALayer
等效块)绘制背景,并使用相应的CGBlendMode
绘制辉光这可能会改变
CALayer
已经有一个名为compositingFilter
的属性。但是,从iOS 5.1开始,其行为尚未定义。如果将来有人读到这篇文章,而iOS确实有可以使用的合成过滤器,请添加一条评论。是否可以发布图片-Photoshop显示您希望它的外观,以及从应用程序显示它当前的外观?也就是说,您可能无法仅通过更改视图设置来完成所需的操作。如果使用CGBlendMode
手动绘制,则可以访问许多有用的合成效果。因此,您可以创建一个UIView
子类,然后在其drawRect
方法中绘制一部分表格背景,然后使用所需的混合模式在顶部绘制图像。跳过背景绘制步骤是很好的,但你可能无法做到。@dondragmer谢谢你的回复。我在主主题中附上样本。看来你是对的,做我想做的唯一方法就是按照你的建议去做:(可以发布图片吗?Photoshop显示您希望它的外观,应用程序显示它当前的外观?也就是说,您可能无法通过更改视图设置来完成您想要的操作。如果您使用cBlendMode
手动绘制,您可以访问许多有用的合成效果。因此,您可以创建UIVi。)ew
子类,然后在其drawRect
方法中绘制一部分表格背景,然后使用所需的混合模式在顶部绘制图像。跳过背景绘制步骤很好,但您可能无法完成。感谢您的回复。@dondragmer。我在主主题中附上了示例。看起来您是正确的,也是唯一的方法我想按照你的建议做:(Thanx.是的-左边是photoshop图片,右边是模拟器。第二种变体最简单,但如果我这么做的话,它看起来不是必须的(将半透明的白色变成半透明的棕色)然而,这是最简单的方法,几乎可以实现我想要的。结果非常接近。为了获得我想要的效果,我下一步将重叠混合模式更改为默认模式。在该区域将颜色从白色更改为红棕色并添加一些噪声后。现在它看起来非常接近模拟器中的原始图像(第3张图片)Thanx.是的-左边是photoshop图片,右边是模拟器。第二个版本最简单,但如果我这样做的话,它看起来不是必须的(将半透明白色改为半透明棕色)然而,这是最简单的方法,几乎可以实现我想要的。结果非常接近。为了获得我想要的效果,我下一步将重叠混合模式更改为默认模式。在该区域将颜色从白色更改为红棕色并添加一些噪声后。现在它看起来非常接近模拟器中的原始图像(第3张图片)