Отличный вопрос, на который у меня нет прямого ответа, но у меня есть решение.
Обычно, когда я получаю дизайн, панель навигации на самом деле не похожа на панель навигации iPhone с оттенком.Градиент, как правило, также отличается.На мой взгляд, есть два пути:
- Получить приложение вроде дизайна
- Получить приложение точно так же, как дизайн
В большинстве случаев я получаю его почти как дизайн, который обычно означает выборку цвета, использованного в макете, и использование его в качестве оттенка (или, возможно, немного более светлой версии).
Если яВы действительно хотите получить все правильно, способ заменить чертеж панели навигации по умолчанию изображением.
Просто создайте категорию для UINavigationBar и переопределите drawRect.Это работает на удивление хорошо, и в большинстве случаев кнопки по умолчанию будут того цвета, который вам нужен, и будут смешиваться без лишних усилий.
В любом случае, по моему опыту, заставить ваше приложение выглядеть точно так, как работает дизайнерработа, которую обычно пропускают.Но когда все сделано правильно, это того стоит.
В приведенном ниже примере мне нужно было поддерживать два разных вида навигационной панели для двух разных разделов приложения, поэтому я использовал свойство тега представления, чтобы проверить, какую версию использовать.
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image=nil;
if (self.tag == 0)
image = [UIImage imageNamed: @"navBarDesign1.png"];
else if (self.tag == 1)
image = [UIImage imageNamed: @"navBarDesign2.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end