在iphone中设置UIToolBar的背景图片

Posted

技术标签:

【中文标题】在iphone中设置UIToolBar的背景图片【英文标题】:setting background image of UIToolBar in iphone 【发布时间】:2010-04-17 08:55:48 【问题描述】:

我想在我的 iPhone 应用程序中设置UIToolbar 的背景图片。

目前我正在使用UIColorinitWithPatternImage:进行设置。

但它没有做我想做的事。

请提出其他解决方案。

【问题讨论】:

如果 initWithPatternImage 没有做你想做的事,那么解释你想要的可能会增加你得到答案的机会。 【参考方案1】:

您不需要创建自定义类。您可以向 UIToolBar 添加一个类别,如下所示

@implementation UIToolbar (UIToolbarCategory)
- (void)drawRect:(CGRect)rect 
    UIColor *color = [UIColor colorWithRed:0.547 green:0.344 blue:0.118 alpha:1.000]; //whatever goes well with your background image.
    UIImage *img  = [UIImage imageNamed: @"your-navbar-img.png"];
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    [img release];
    self.tintColor = color;
    [super drawRect:rect];

@end

我已经测试过了,效果很好。

P.S:我昨晚用 4.3 进行了测试,它没有按预期工作,但在 4.2 上工作正常。我还没有找到任何原因,找到合适的sn-p后会更新。

对于 4.3 及更高版本,您应该继承 UIToolbar 或 UINavigationBar 类别添加不支持。以下代码适用于 4.3

#import <UIKit/UIKit.h>


@interface MyAppToolBar : UIToolbar



@end

@implementation MyAppToolBar

- (void)drawRect:(CGRect)rect 
    [super drawRect:rect];
    UIColor *color = [UIColor colorWithRed:0.547 green:0.344 blue:0.118 alpha:1.000]; //wood tan color
    UIImage *img  = [UIImage imageNamed: @"your-navbar-img.png"];
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    [img release];
    self.tintColor = color;



@end

限制的问题是,您需要更改所有 XIB 文件中每个 UIToolbar 对象的 customclass。而且我担心当您打开 UIImagePickerController 以匹配您的应用程序样式时它不会影响导航栏。

【讨论】:

你应该调用 [super drawRect:rect];在您的 drawRect: 实施结束时。【参考方案2】:

或者您可以创建自定义类并将其分配给您的控件(通过界面生成器)并在其中实现 drawRect 方法...

喜欢

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

【讨论】:

是的,这是一个巧妙的隐藏功能,您还可以使用它来自定义导航控制器中的皮肤导航栏。【参考方案3】:

查看这个最近的问题:Custom logo on top of UINavigationBar?

【讨论】:

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

在 Seaborn 中设置绘图背景颜色

在css中设置背景不透明度[重复]

除非在情节提要中设置设备,否则视图无法正确缩放(视图为:iphone 5s/8/etc)

UIGestureRecognizers 干扰 UIToolbar?

iPhone:如何在表格中设置 ImageView 的框架?

iPhone-在 PickerView 中设置字体列表