Я думаю, что ответ зависит от того, где вы хотите красную линию, как часть панели навигации или просто под ней. Это было бы разницей всего в 1 пиксель, но дизайнеры требуют этого:)
Если вы хотите, чтобы он находился ниже панели навигации, вам определенно нужно разместить его во всех представлениях приложения, где требуется строка.
Есть удивительно простой способ изменить внешний вид навигационной панели, я использовал его для скининга всего вида навигационной панели, но он, вероятно, будет работать даже для некоторых частей навигационной панели, если вы сделаете изображение частично прозрачным.
По сути, мы хотим обработать UINavigationItem
из UIViewController
, который находится в вашей иерархии навигации.
- создать изображение размером 320x44, содержащее ваш собственный внешний вид navbar
- добавить
UIImageView
к XIB
, где UINavigationItem
равно
- связывает свойство
titleView
UINavigationItem
с UIImageView
Это почти работает, за исключением того, что вид заголовка будет изменен более странным способом. Чтобы исправить это, у меня есть подкласс UIImageView
, который держит изображение правильно установленным:
@implementation TitleViewHack
- (void)setFrame:(CGRect)frame
{
frame.size.width = 320;
if(frame.origin.x > 0 && frame.origin.x < 20)
frame.origin.x = 0;
[super setFrame:frame];
}
@end
Таким образом, вместо UIImageView
выше вы будете использовать TitleViewHack
класс.