Вот что я использовал довольно успешно:
CALayer *backgroundImageLayer;
backgroundImageLayer = [CALayer layer];
backgroundImageLayer.frame = CGRectMake(0, 0, 300, 44);
backgroundImageLayer.backgroundColor = [UIColor redColor].CGColor;
backgroundImageLayer.contents = (id)[[UIImage imageNamed:@"barImage.png"] CGImage];
backgroundImageLayer.zPosition = -5.0;
[myNavigationConroller.navigationBar.layer addSublayer:test];
Ключ устанавливал zPosition на -5.0, хотя любое отрицательное значение должно работать.Это заставляет backgroundImageLayer not мешать кнопкам и метке UINavigationBar.