我对 iOS 编程很陌生。我正在尝试将工具栏背景设置为自定义图像。我也在使用故事板。我该怎么做?我是否在 UI Kit 框架中编辑 UIToolbar?我需要更改 Storyboard 中的某些内容吗?
谢谢,
我对 iOS 编程很陌生。我正在尝试将工具栏背景设置为自定义图像。我也在使用故事板。我该怎么做?我是否在 UI Kit 框架中编辑 UIToolbar?我需要更改 Storyboard 中的某些内容吗?
谢谢,
您可以使用UIToolbar
's 的内置-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 图像。UIToolbar 继承自 UIView。这对我有用:
[topBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:BAR_BKG_IMG]] autorelease] atIndex:0];
更新
topBar ------ 是你正在使用的 UIToolBar 的出口
在你创建你的 UIToolBar 的地方使用这个代码实现 UIToolbar 的类。再加上告诉我你使用工具栏的主要目的是什么
与其编辑 UIToolBar,不如创建一个您想要的大小和皮肤相同的 UIView?如果你是新手,那会更容易。
或者如果你想覆盖 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
对 ToolBars 和 NavBars 的背景图像很有帮助。我知道设置 NavBar 和 ToolBar 的背景图像通常是轻而易举的事。但是,当您展示模态 VC 时,出于某种疯狂的原因,在添加了 NavBar 并且您确实更改了背景图像时,它的大小似乎翻了一番。改变高度会产生奇怪的结果。
我的问题是我在整个应用程序中都使用了 NavController,但需要一个模式视图来显示它的一个或两个方面。很简单。但是,我需要一个带有完成按钮的 NavBar 或 ToolBar 类型的标题来将 VC 从堆栈中弹出。再次,不是问题。但我需要 NavBar 或 ToolBar 看起来与我的应用程序中的其他任何地方相同。
我选择了一个工具栏,因为 VC 是以模态方式呈现的。所以,我的工具栏就坐在那里,典型的苹果蓝色。很好,但不是我的应用程序的其余部分看起来如何,每个 NavBar 都使用了一个变黑的图像。使用 iOS 5 外观代理,我更改了工具栏的背景图像。这奏效了。但是,除非我的 UIImage 完全符合工具栏所期望的比例和大小,否则我就陷入了困境。图像根本看起来不正确。所以,我决定创建一个 UIIMageView,我可以在其中控制内容模式,然后在工具栏上插入一个子视图。
看看我下面的代码。
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"