带有自定义背景图像的UINavigationbar

时间:2011-08-08 11:46:45

标签: iphone uinavigationbar categories

我有一个自定义类别,可以根据我所在的视图为导航栏定义特殊的背景图像。

在类别中,我使用

设置图像
- (void)drawRect:(CGRect)rect
事实是,当在导航控制器中浏览我的视图时,自定义图像消失,留下空白空白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 :(得分:0)

您应该只在主线程上使用UIKit。

答案 1 :(得分:0)

在ViewController中,尝试使用@“BGimage.png”作为图像文件:

//将图像放置为视图的bg图案(图块) //self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@“BGimage.png”]];