设置 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 背景图片的主要内容,如果未能解决你的问题,请参考以下文章