Добавление фонового изображения в UINavigationBar охватывает заголовок - PullRequest
0 голосов
/ 08 ноября 2011

Я успешно добавил фоновое изображение в свой UINavigationBar со следующим кодом:

    UIImageView *barView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"subHeader_lg.png"]];
    [calculatorBar addSubview:barView];

    [barView release];

Однако при использовании этого метода заголовок представления покрывается изображением.

enter image description here

Если я зайду дальше в приложение, а затем вернусь, в верхней части фонового изображения появится заголовок, например:

enter image description here

Любые идеикак сделать так, чтобы заголовок отображался сверху с самого начала?

Я пытался отодвинуть barView назад, но это делает его скрытым за всем остальным.

РЕДАКТИРОВАТЬ:

Кажется, что пользовательская функция рисования является принятым ответом, но я не могу вызвать функцию рисования.У меня есть этот код в нижней части моего файла appdelegate.m

@implementation UINavigationBar (UINavigationBarCustomDraw)

- (void)drawRect:(CGRect)rect
{
    UIImage *image = [UIImage imageNamed: @"subHeader_lg.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Чтобы установить фоновое изображение на панели навигации, используйте следующее.

В iOS 5.x используйте [calculatorBar setBackgroundImage: barView.image forBarMetrics: 0];

На iOS 4.x использовать calculatorBar.layer.contents = (id) barView.image.CGImage;

1 голос
/ 08 ноября 2011

Когда вы вызываете «addSubview», он добавляет его к любому представлению, которое уже было добавлено, таким образом покрывая заголовок.

То, что вы хотите, это

[calculatorBar insertSubview: barView atIndex: 0];

Однако это не заставит его «застрять» при последующих нажатиях, поэтому используйте методы, описанные в http://www.developers -life.com / custom-uinavigationbar-with-image-and-back-button.html для лучшего решения.

Также в iOS 5 Apple добавила встроенный способ настройки панели навигации, см. http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAppearance_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40010906

...