此代码适用于iPad Simulator 4.2,但不适用于更高版本的iOS4.3或之后。我无法覆盖UIToolbar类方法。
@implementation UIToolbar (CustomImage)
- (void)drawRect:(CGRect)rect
{
UIImage *image = [[UIImage imageNamed:@"ToolBar.png"] retain];
[image drawInRect:rect];
[image release];
}
//return 'best' size to fit given size. does not actually resize view. Default is return existing view size
- (CGSize)sizeThatFits:(CGSize)size {
CGSize result = [super sizeThatFits:size];
result.height = 80;
return result;
};
对此有什么替代解决方案?请指导我。 在以后的版本中..-(void)drawRect :( CGRect)从不调用rect。
使用iPad模拟器4.2代码运行正常,但从未调用过iPad模拟器4.3 drawRect。
以下是工具栏的屏幕截图:
答案 0 :(得分:1)
这样的事情怎么样?
@implementation UIToolbar (UIToolbarCategory)
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
if([self isMemberOfClass: [UIToolbar class]]){
[super drawRect:rect];
UIImage *image = [UIImage imageNamed:@"bar_gradient.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
}
@end
答案 1 :(得分:1)
您将其作为一个类别实现,您需要根据iOS5更改日志继承UIToolBar
在iOS 5测试版中,UINavigationBar, UIToolbar和UITabBar实现已经改变了 drawRect:方法不会在这些类的实例上调用,除非它 在子类中实现。
已重新实施drawRect的应用:在其中任何一个类别中 类会发现没有调用drawRect:方法。
UIKit会进行链接检查,以防止在应用中调用该方法 在iOS 5之前链接但在iOS 5或iOS上不支持此设计 后来。应用可以:
- 对iOS 5及更高版本中的条形图使用自定义API,这是首选方式。
- 子类UINavigationBar(或其他bar类)并覆盖子类中的drawRect:。