在iphone中设置UIToolBar的背景图像

时间:2010-04-17 08:55:49

标签: iphone objective-c uitoolbar uicolor

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

目前,我使用UIColor的{​​{1}}进行设置。

但它没有做我想做的事。

请提出其他解决方案。

3 个答案:

答案 0 :(得分:4)

您无需创建自定义类。您可以在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工作正常。我找不到任何理由,一旦找到正确的片段就会更新。

对于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以匹配你的应用程序风格时,我担心它不会影响导航栏。

答案 1 :(得分:3)

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

喜欢

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

答案 2 :(得分:1)

请参阅最近的问题:Custom logo on top of UINavigationBar?