UINavigationbar с пользовательским фоновым изображением - PullRequest
0 голосов
/ 08 августа 2011

У меня есть пользовательская категория для определения специального фонового изображения для моей панели навигации в зависимости от вида, в котором я нахожусь.

В категории я установил изображение, используя

- (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]];

Ответы [ 2 ]

0 голосов
/ 13 мая 2013

В вашем ViewController попробуйте следующее, где @ "BGimage.png" - это файл вашего изображения:

// помещает изображение как шаблон bg (тайлы) для просмотра //self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "BGimage.png"]];

0 голосов
/ 08 августа 2011

Вы должны использовать UIKit только в главном потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...