设置 UIToolBar 背景图片

Posted

技术标签:

【中文标题】设置 UIToolBar 背景图片【英文标题】:Setting UIToolBar background image 【发布时间】:2013-08-13 15:25:35 【问题描述】:

我有一张图片,我想在 ios 5+ 应用程序中用作 UIToolBar 的背景。背景图像根据对视图执行的操作而变化。图像比 UIToolBar 大,所以需要将图像调整为缩小而不是增加大小。

查看此处的其他问题以及对该问题的其他研究后,建议的解决方案不起作用。建议如下:

UIImage *topimg = [[UIImage imageNamed:@"headerBar-Human.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[_headerBar setBackgroundImage:topimg forToolbarPosition:UIToolbarPositionTop barMetrics:UIBarMetricsDefault];

我在 UIEdgeInsetsMake 调用中尝试了不同的值,但没有成功。问题是根本没有显示图像。显示默认的蓝色工具栏背景。

如果我删除 resizableImageWithCapInsets 函数,图像将显示,但只有工具栏矩形坐标覆盖的图像部分。

我也尝试过创建一个UIImageView,添加图片并添加到工具栏,但是结果都是一样的。

有人有什么建议吗?

【问题讨论】:

如果你想自定义一个 UIToolBar,或者 UINavigationBat,你必须继承它。 从 iOS 5 开始,您不需要子类化它。 Apple 在 iOS 5 中开放了一种方法 backgroundImageForToolbarPosition:barMetrics: 允许添加图像作为背景。这就是我遇到问题的地方。 【参考方案1】:

您可以使用此功能调整背景图像的大小:

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize

    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

我建议使用您的_headerBar.frame.size 作为第二个参数调用此函数。

【讨论】:

我将它作为一个类别添加到 UIImage 中,它运行良好。谢谢!

以上是关于设置 UIToolBar 背景图片的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 uitoolbar 的背景类似于我的导航栏

在iphone中设置UIToolBar的背景图片

如何让 UIToolbar 的背景透明? [复制]

UIToolbar 具有半透明而不是黑色

更改 UIToolbar 的背景图片

如何以编程方式将平面背景 UIColor 渲染为 UIToolbar 的背景?