iOS5工具栏背景图片

时间:2012-04-13 16:06:14

标签: iphone objective-c ios5

我是iOS编程的新手。 我正在尝试将工具栏背景设置为自定义图像。 我也在使用故事板。 我该怎么做? 我是否在UI Kit框架中编辑UIToolbar?我是否需要在故事板中更改内容?

谢谢,

4 个答案:

答案 0 :(得分:3)

您可以使用UIToolbar的内置-setBackgroundImage:forToolbarPosition:barMetrics:方法:

// portrait
[yourToolbar setBackgroundImage:[UIImage imageNamed:@"YourToolbarBkg-Portrait.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

// landscape
[yourToolbar setBackgroundImage:[UIImage imageNamed:@"YourToolbarBkg-Landscape.png"] forToolbarPosition:UIToolbarPositionAny barMetrics: UIBarMetricsLandscapePhone];
  • YourToolbarBkg-Portrait.png将为320x44 bkg图像用于纵向模式
  • 对于横向模式,
  • YourToolbarBkg-Landscape.png将为480x32 bkg图像。

答案 1 :(得分:2)

UIToolbar继承自UIView。这对我有用:

[topBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:BAR_BKG_IMG]] autorelease] atIndex:0];

<强>已更新

topBar ------是你正在使用的UIToolBar的出口

使用此代码,您正在创建UIToolBar实现UIToolbar的类。 再告诉我你使用工具栏的主要目的是什么

答案 2 :(得分:1)

为什么不创建一个大小和皮肤相同的UIView,而不是编辑UIToolBar?如果你是新人,那会更容易。

或者如果你想覆盖UIToolbar:

@implementation UIToolbar (CustomImage)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"image.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

答案 3 :(得分:0)

为ToolBars和NavBars提供背景图像。我知道设置NavBar的背景图像和ToolBar通常是一个轻而易举的事。但是,当你呈现模态VC时,出于某种疯狂的原因,在添加NavBar并且你要改变背景图像的情况下,它看起来会变大一倍。改变高度有奇怪的结果。

我的问题是我在我的应用程序中使用NavController,但需要一个模态视图来解决它的一个或两个方面。很简单。但是,我需要一个带有完成按钮的NavBar或ToolBar类型的标题来将VC从堆栈中弹出。同样,不是问题。但是我需要NavBar或ToolBar看起来和我应用程序中的其他地方一样。

我确定了一个工具栏,看到VC是以模态方式呈现的。所以,我的ToolBar就是典型的Apple-blue。很好,但不是我的应用程序的其余部分看起来如何,每个NavBar使用黑色图像。使用iOS 5外观代理,我改变了ToolBar的背景图像。这很有效。但是,除非我按照工具栏所期望的比例和大小来获得UIImage,否则我会陷入困境。图像看起来根本不正确。所以,我决定创建一个UIIMageView,在那里我可以控制内容模式,然后将子视图插入到toolBar中。

请查看下面的代码。

UIImageView *toolbarImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:NAV_BAR_BACKGROUND]];
    [toolbarImageView setFrame:[self.IBOToolBar bounds]];
[toolbarImageView setContentMode:UIViewContentModeScaleAspectFill];
[self.IBOToolBar insertSubview:toolbarImageView atIndex:1];

这有点像绒毛,但我希望这有助于某人改变他们工具栏上的图像。

NAV_BAR_BACKGROUND可以定义如下:

#define NAV_BAR_BACKGROUND @"navBarBlackMattDarkSquare.png"