UIButton与透明图像背景不绘制透明

时间:2012-05-18 17:11:41

标签: ios uiimage uibutton

我遇到了一个奇怪的问题。我有UIButton UIButtonTypeCustom

对于它的背景图像,我使用的是透明图像。问题是实际图像的透明度似乎不正确。奇怪的是它实际上是透明的,因为背景在按钮后面正确显示。

下面是按钮的样子(左)和按钮的样子(右)的示例。我拍了一张截图并在Photoshop中将图像叠加在背景上,背景在图像中正确显示,而在左边的实际按钮中没有。值得注意的是,当插入到背景上时,左UIButton与实际图像的光晕更强烈。

UIButton issue

这是我用来表明它确实具有透明度的图像:

Image used

这是我的代码:

UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeCustom];
nextButton.backgroundColor = [UIColor clearColor];
nextButton.frame = CGRectMake(0, 0, 30, 30);
[nextButton setBackgroundImage:[[UIImage imageNamed:@"ButtonBackground.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forState:UIControlStateNormal];

forState:UIControlStateHighlighted];     [self addSubview:nextButton];

我在其他地方使用完全相同的图像来绘制并且没有透明度问题。

更新:添加其他透明图像同样会增加alpha的强度。虽然它们是透明的,但它们看起来更暗,因此透明度更低。再次,在其他地方工作完善。

更新2:更糟糕的是,我刚刚创建了一个新项目,其中包含从其他项目拖动的完全相同的图像,创建了一个按钮,按钮显示没有问题。多么令人难以置信的烦恼!

2 个答案:

答案 0 :(得分:0)

您不必将背景颜色设置为透明。另外,尝试删除图像上的可伸缩调用。

此外,您应该设置图像,而不是背景图像。

如果这些都没有帮助,那么Apple可能只是不正确地渲染您的图像。尝试创建CALayer并将其内容设置为您的图像,看看它是否正常工作。

答案 1 :(得分:0)

试试这个

    UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeCustom];

    nextButton.frame = CGRectMake(0, 0, 30, 30);

    nextButton.alpha=0.5f;

    [nextButton setBackgroundColor:[UIColor clearColor]];

    [nextButton setOpaque:NO];

    [nextButton setBackgroundImage:[UIImage imageNamed:@"ButtonBackground.png"] 
                          forState:UIControlStateNormal];