1

我正在为导航栏制作自定义 UI,并且我有一个与这篇文章中提出的问题完全相同的问题

UIBarButtonItem 上的自定义背景/透明背景?

在 StoryBoard 中,我尝试了各种组合以使我的 UIbarbuttonitem 着色为透明或清晰的颜色,但我仍然看到这个丑陋的黑色按钮(请参阅 + 符号)。如何实现透明效果,让按钮看起来与背景融为一体?

我的截图

在此处输入图像描述

其他一些应用截图。看看这看起来多漂亮?!

在此处输入图像描述

请注意,+ 图像是我自己的自定义 png img,大小为 20 x 20 像素,具有透明/空白背景。

4

3 回答 3

7

您可以使用 iOS 5 中引入的新外观 API 来实现这一目标以及更多功能。

基本上,您只需为 UI 设置一次外观,它就会反映在整个程序中。

这是一个示例UIBarButtonItem

// You can also use stretchable images
UIImage *image = [[UIImage imageNamed:@"myCoolBarButton.png"]  resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

如果您不能使用 iOS 5,那么您必须像这样以编程方式构建它们:

// Create a custom button with an image
UIImage *image = [UIImage imageNamed:@"myCoolBarButton.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];
button.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);

// Create a custom UIBarButtonItem with the button
UIBarButtonItem aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aButton];

无论如何,这里有一些关于外观主题的好教程的链接

iOS 5 中的用户界面自定义

如何使用新的 iOS 5 外观 API 让您的应用脱颖而出

编辑:为了澄清起见,使用自定义图像比使用颜色、渐变和透明度要容易得多。

于 2012-10-26T18:07:48.323 回答
0

你不能用色调来做到这一点。您必须同时设置导航栏的 backgroundImage 和栏按钮项的 backgroundImage,以便它们根据需要进行协调。

绘制条形按钮项目的背景图像时,您可能必须绘制整个按钮,包括圆角矩形轮廓和圆角矩形轮廓的阴影,但这并不难,一旦你完成了它就可以重用永远的代码。

于 2012-10-26T18:04:19.480 回答
0

我认为您带有 + 符号的 png 图像不包含 alpha 通道。我有透明的图像,它对我来说非常好。

于 2012-10-26T18:06:38.247 回答