所以我有一个A级,其中我有以下内容:
@implementation UIToolbar (A)
- (void)drawRect:(CGRect)rect {
UIColor *color = [UIColor colorWithWhite:0.0 alpha:1.0];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
CGContextFillRect(context, rect);
self.tintColor = [UIColor colorWithWhite:0.0 alpha:1.0];
}
@end
我有一个B级,我有以下内容:
@implementation UIToolbar (B)
- (void)drawRect:(CGRect)rect {
UIColor *color = [UIColor colorWithWhite:10.0 alpha:1.0];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
CGContextFillRect(context, rect);
self.tintColor = [UIColor colorWithWhite:0.0 alpha:1.0];
}
@end
问题是为什么它只是每次调用的顶级类别?我基本上想为每个不同的UIViewController设置不同的UIToolbar颜色/配置,我该怎么做?
答案 0 :(得分:1)
A和B不是类,它们是类别。任何给定的类一次只能有一个给定方法的实现。如果您尝试覆盖多个类别中的方法,那么您获得的实现是未定义的。实际上,建议不要覆盖类别中的方法 - 如果需要覆盖,则应创建子类。
答案 1 :(得分:0)
当您使用此实现时,这是所有与主题自定义的uitoolbar。
如果您的应用程序是在ios5下开发的,则可以使用方法setBackgroundImage:forToolbarPosition:barMetrics:
。
如果你在ios下开发< 5,你可以实现一个从uitoolbar继承的新类,它有一个自定义的drawRect。