Следующее работает в iOS 5 (и iOS 6 beta 4, хотя там все еще видна небольшая верхняя тень).
Обратите внимание: Сделать прозрачным UIToolbar или UINavigationBar редко бывает хорошей идеей, и изменение элементов Apple UIKit таким способом неизбежно рано или поздно сломается.
TransparentToolbar.h
#import <UIKit/UIKit.h>
@interface TransparentToolbar : UIToolbar
@end
TransparentToolbar.m
#import "TransparentToolbar.h"
@implementation TransparentToolbar
-(void)insertSubview:(UIView *)view atIndex:(NSInteger)index
{
// This method is called with a view of class "UINavigationBarBackground" or "_UIToolbarBackground", respectively. It would be possible to check for this with NSStringFromClass([view class]) to be completely sure that we're skipping the right view.
if (index != 0)
{
[super insertSubview:view atIndex:index];
}
else
{
// insert your custom background view, if you want to
}
}
@end
РЕДАКТИРОВАТЬ: В iOS 5+ этоТакже возможно просто установить backgroundImage (который может быть прозрачным).Это, безусловно, более «чистое» решение, но оно менее гибкое, чем обычное UIView
.
[someToolbar setBackgroundImage:[UIImage imageNamed:@"clear"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];