4

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

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

下面是按钮外观(左)和按钮外观(右)的示例。我截取了一张截图并将图像覆盖在 Photoshop 中的背景上,背景在图像中正确显示,而在左侧的实际按钮中却没有。值得注意的是,左侧 UIButton 上的辉光比插入背景时的实际图像更强烈。

UIButton 问题

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

使用的图像

这是我的代码:

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]; [自我 addSubview:nextButton];

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

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

更新 2:更糟糕的是,我刚刚创建了一个新项目,使用从另一个项目中拖动的完全相同的图像,创建了一个按钮,并且按钮正确显示没有问题。多么令人讨厌!

4

2 回答 2

0

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

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

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

于 2012-05-18T17:16:46.710 回答
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];
于 2012-05-18T17:18:43.230 回答