Ios 带有透明图像背景的UIButton图形不透明

Ios 带有透明图像背景的UIButton图形不透明,ios,uiimage,uibutton,Ios,Uiimage,Uibutton,我遇到了一个奇怪的问题。我有一个带有uibuttonypecustom的ui按钮 对于它的背景图像,我使用的是透明图像。问题是实际图像的透明度似乎不正确。奇怪的是它实际上是透明的,因为背景显示在按钮后面 下面是按钮外观(左)和按钮应外观(右)的示例。我拍摄了一张截图,将图像覆盖在Photoshop中的背景上,背景在图像内部正确显示,而在左侧的实际按钮中则没有。值得注意的是,与插入背景时的实际图像相比,左UIButton上的光晕更强烈 下面是我用来表示它确实具有透明度的图像: 这是我的密码:

我遇到了一个奇怪的问题。我有一个带有
uibuttonypecustom
ui按钮

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

下面是按钮外观(左)和按钮应外观(右)的示例。我拍摄了一张截图,将图像覆盖在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:uicontrol状态突出显示]; [自添加子视图:下一个按钮]

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

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


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

您不必将背景色设置为透明。此外,请尝试删除映像上的可扩展调用

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

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

试试这个

    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];

你不能在UIButton上拉伸图像,所以我必须设置背景图像,应该可以。无论如何,任何一个都不能解决它。我以前从来没有遇到过这个问题。为什么你不能以合适的大小重新创建图像呢?或者在将图像添加到按钮之前,通过在代码中缩放图像来重新创建它。在将其添加到按钮之前,请尝试缩放它,然后将其作为图像而不是背景图像添加到按钮。您确定该图像与您在photoshop中使用的图像相同吗?您是否尝试将图像从XCode拖动到photoshop中,以确保添加到项目中的图像完全相同?是的,100%确定。上面的图片是一个屏幕截图,右边的图片与左边的按钮完全相同。希望有人能找到答案。我最好的猜测是,由于某种原因,苹果无法正确渲染您的图像数据,但我以前从未遇到过透明度问题。您可以在不使用透明胶片的情况下导入它,然后编辑该层以降低其不透明度。是的,设置alpha有助于解决我所看到的问题,因为图像在背景中绘制的强度似乎比它应该的高。再次,它与实际图像的透明度不同。您是否尝试过设置图像属性而不是背景图像属性?这会有什么不同吗?请看下面的对话。您可能只需要一个干净的构建。您必须有一个不太透明或不透明的旧图像,并将其更改为新图像,并且它保留了对旧图像的引用。由于某些原因,XCode似乎会粘住已删除的文件。如果您曾经更改过XCode项目中的图像或文件,清理项目总是一个好主意,它应该会更新所有内容。尝试清理旧项目,看看会发生什么。根据更新2:尝试:1)xcode-清理项目,2)模拟器-重置内容和设置或删除应用程序3)设备-删除现有应用程序