У меня есть пользовательская категория для определения специального фонового изображения для моей панели навигации в зависимости от вида, в котором я нахожусь.
В категории я установил изображение, используя
- (void)drawRect:(CGRect)rect
Дело в том, что при навигации по моим представлениям в Navigation Controller пользовательское изображение исчезает, оставляя пустое пустое пространство 320x44 (размер столбца) до повторного ввода следующего контроллера, т.е. примерно через 1 секунду.
Это выглядит уродливо, и мне было интересно, есть ли лучший способ сделать это, поэтому у меня есть чистая реализация, которая также хорошо выглядит и соответствует моим требованиям.
Заранее спасибо.
Код категории:
- (void)initImageDictionary
{
if(navigationBarImages==NULL){
navigationBarImages=[[NSMutableDictionary alloc] init];
}
}
- (void)drawRect:(CGRect)rect
{
UIImage *imageName = [navigationBarImages objectForKey:[NSValue valueWithNonretainedObject: self]];
UIImage *image = imageName;
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
- (void)setMyImage:(UIImage*)image
{
[navigationBarImages setObject:image forKey:[NSValue valueWithNonretainedObject: self]];
[self setNeedsDisplay];
}
Тогда я звоню:
[self.navigationBar performSelectorInBackground:@selector(setMyImage:) withObject:[UIImage imageNamed:imageTopbar]];