如果您只关心 iOS 5+,还有另一种不涉及自定义视图的方法。随着 UIAppearance 添加,您可以使用
UIImage * emptyImage() {
UIGraphicsBeginImageContext(CGSizeMake(1, 1));
UIImage * emptyImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return emptyImage;
}
UIBarButtonItem * item = [[UIBarButtonItem alloc] initWith...];
[item setBackgroundImage:emptyImage() forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
self.navigationItem.leftBarButtonItem = item;
如果这是一个应用程序范围的风格,那就做
[[UIBarButtonItem appearance] setBackgroundImage:emptyImage() forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
一旦在您的 AppDelegate 中,您甚至不需要对单个实例大惊小怪。