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