iOS 系统自带的 UIToolbar 的样式简单,往往不能满足开发或特殊目的的需要,例如设置完全背景透明的 UIToolbar 或者自定义 UIToolbar 的背景色,这时候就需要对 UIToolbar 进行单独定制。 设置 UIToolbar 背景透明,只需要设置 UIToolbar 的 backgroundColor 为 [UIColor clearColor] 即可,如果需要单独定制 UIToolbar 的背景色,则需要继承并自己实现 UIToolbar 对象。 直接修改背景色请参照以下的方法 1,继承并自己实现 UIToolbar 对象请参照方法 2。
方法 1 iOS6.1 之前
// 使 button 的 tint 色与导航条一致
toolbar.tintColor = self.navigationController.navigationBar.tintColor;
toolbar.backgroundColor = [UIColor clearColor]; // 设置为背景透明
for (UIView *view in [rightToolbar subviews]) {
if ([view isKindOfClass:[UIImageView class]]) {
[view removeFromSuperview];
}
}
iOS7 以后
[self.toolbar setBackgroundImage:[UIImage new]
forToolbarPosition
barMetrics];
[self.toolbar setShadowImage:[UIImage new]
forToolbarPosition];
方法 2
//MyToolbar.h
@interface MyToolbar : UIToolbar
@end
//MyToolbar.m
@implementation MyToolbar
-
(id)initWithFrame:(CGRect)aRect {
if ((self = [super initWithFrame])) {
self.opaque = NO;
self.backgroundColor = [UIColor clearColor]; // 设置为背景透明,可以在这里设置背景图片
//self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];
self.clearsContextBeforeDrawing = YES;
}
return self;
} -
(void)drawRect:(CGRect)rect {
// do nothing
}
@end