Как изменить цвет панели навигации по умолчанию по умолчанию?изменить цвет навигационной панели
Спасибо.
Как изменить цвет панели навигации по умолчанию по умолчанию?изменить цвет навигационной панели
Спасибо.
UINavigationBar
class имеет UIColor *tintColor
что то, что вы можете изменить в коде.
Альтернативно это свойство также отображается в инструменте проектирования интерфейса InterfaceBuilder.
Спасибо за ваш ответ. Не могли бы вы сообщить мне, смогу ли я использовать изображение в качестве фона навигационной панели? – ebaccount
Чтобы установить его на изображение, вы можете попробовать использовать шаблон для своего UIColor: UIImage * patternImage = [UIImage imageNamed: @ "background.png"]; UIColor * myColor = [UIColor colorWithPatternImage: patternImage]; yourNavigationController.navigationBar.tintColor = myColor; Я не пробовал это, поэтому YMMV. Если это не сработает, вам придется подклассифицировать UINavigationBar (Не самый простой из задач). – pixel
@pixel UINavigationBar, похоже, не хочет принимать UIColor, сделанный с colorWithPatternImage, к сожалению. Кажется, это создает черную навигационную панель. –
Предполагая, что вы добавили навигационную панель программно, а не в Interface Builder, просто поместите это в свой метод viewDidLoad.
self.navigationController.navigationBar.tintColor = [UIColor grayColor];
Свойство TintColor не влияет на стандартное подменю навигационной панели как нижней границы и тени. Иногда полезно переопределить макет панели навигации вообще.
Несмотря на то, что navigationBar доступен только для чтения для UINavigationController, вы можете избежать этого ограничения на «setValue: forKey:». Этот метод был одобрен для 5 приложений, успешно представленных в AppStore.
Вы можете подклассифицировать UINavigationBar и изменить метод drawRect: как хотите. Например,
@implementation CustomNavigationBar
- (void) drawRect:(CGRect)rect
{
[super drawRect:rect];
UIImage *backgroundImage = ImageFromColor(WANTED_COLOR);
[backgroundImage drawInRect:rect];
}
После того, как вы можете создать подкласс UINavigationController и изменить initWithRootViewController:
- (id) initWithRootViewController:(UIViewController *)rootViewController
{
self = [super initWithRootViewController:rootViewController];
if (self)
{
CustomNavigationBar *navBar = [CustomNavigationBar new];
[self setValue:navBar forKey:@"navigationBar"];
}
return self;
}
Также вы можете изменить этот подход, делая Категория для UINavigationController и реализации метода swizzling для initWithRootViewController:
P.S. Вчера мое приложение появилось в AppStore без каких-либо проблем с этим подходом.
Это очень близко к этому вопросу: http://stackoverflow.com/questions/901542/using-image-or-tint-color-on-uinavigationbar-in-iphone –