自定义uibarbuttonitem图像与背景混合

时间:2012-10-26 17:55:12

标签: iphone ios xcode ipad

我正在为导航栏制作自定义用户界面,我在这篇文章中提出了一个问题

Custom background/transparent background on UIBarButtonItem?

在StoryBoard中,我尝试了各种组合,使我的UIbarbuttonitem色调透明或清晰,但我仍然看到这个丑陋的黑色按钮(请参阅当时的+符号)。如何实现透明效果,使其看起来像我的按钮与背景混合?

我的截图

enter image description here

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

enter image description here

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

3 个答案:

答案 0 :(得分: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];

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

User Interface Customization in iOS 5

How To Make Your App Stand Out With The New iOS 5 Appearance API

编辑: 仅仅为了澄清,使用自定义图像比使用颜色,渐变和透明度更容易。

答案 1 :(得分:0)

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

在绘制条形按钮项目的背景图像时,您可能需要绘制整个按钮,包括圆形rect outine和圆形rect outine的阴影,但这并不困难,当一旦你可以永久使用可重复使用的代码,你就完成了它。

答案 2 :(得分:0)

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