Вы должны использовать прокси «внешний вид» для изменения фона и других свойств стиля элементов управления, таких как UINavigationBar
, UIToolBar
и т. Д. В iOS 5.xx. Однако они недоступны для iOS 4.xx, поэтому для обратной совместимости вам нужно гибридное решение.
Если вы хотите поддерживать устройства как iOS 4.xx, так и iOS 5.xx (т. Е. Ваш DeploymentTarget
равен 4.xx), вы должны быть осторожны при переводе вызова на внешний прокси-сервер, проверяя во время выполнения, Селектор внешнего вида присутствует или нет.
Вы можете сделать это:
//Customize the look of the UINavBar for iOS5 devices
if ([[UINavigationBar class]respondsToSelector:@selector(appearance)]) {
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}
Вы также должны оставить обходной путь iOS 4.xx, который вы, возможно, внедрили. Если вы внедрили обходной путь drawRect
для устройств iOS 4.xx, как упомянуто @ludwigschubert, вы должны оставить это в:
@implementation UINavigationBar (BackgroundImage)
//This overridden implementation will patch up the NavBar with a custom Image instead of the title
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
Таким образом NavBar
будет выглядеть одинаково на устройствах iOS 4 и iOS 5.