我遇到了一个奇怪的问题。我有UIButton
UIButtonTypeCustom
。
对于它的背景图像,我使用的是透明图像。问题是实际图像的透明度似乎不正确。奇怪的是它实际上是透明的,因为背景在按钮后面正确显示。
下面是按钮的样子(左)和按钮的样子(右)的示例。我拍了一张截图并在Photoshop中将图像叠加在背景上,背景在图像中正确显示,而在左边的实际按钮中没有。值得注意的是,当插入到背景上时,左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]; [self addSubview:nextButton];
我在其他地方使用完全相同的图像来绘制并且没有透明度问题。
更新:添加其他透明图像同样会增加alpha的强度。虽然它们是透明的,但它们看起来更暗,因此透明度更低。再次,在其他地方工作完善。
更新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];