在iPhone上设置UIToolBar的背景图片

3

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

目前我使用UIColorinitWithPatternImage:来设置。

但它没有达到我想要的效果。

请建议其他解决方案。


4
如果initWithPatternImage无法满足您的需求,那么解释您想要的可能会增加获取答案的机会。 - Claus Broch
3个回答

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

我已进行测试,它运行良好。

附注:昨晚我使用的是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
在你的drawRect:实现的末尾,应该调用[super drawRect:rect];。 - runmad

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)];
}

是的,这是一个很棒的隐藏功能,你也可以用它来自定义导航控制器中的导航栏。 - Mike Weller


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接