Iphone 带有自定义背景图像的UINavigationbar
我有一个自定义类别,可以根据我所在的视图为导航栏定义一个特殊的背景图像 在类别中,我使用Iphone 带有自定义背景图像的UINavigationbar,iphone,uinavigationbar,categories,Iphone,Uinavigationbar,Categories,我有一个自定义类别,可以根据我所在的视图为导航栏定义一个特殊的背景图像 在类别中,我使用 - (void)drawRect:(CGRect)rect 问题是,在导航控制器中浏览“我的视图”时,自定义图像会消失,留下一个320x44(条大小)的空白区域,直到下一个控制器重新应用(即大约1秒后) 这看起来很难看,我想知道是否有更好的方法来实现这一点,所以我有一个干净的实现,它看起来也很好,符合我的要求 提前谢谢 类别代码: - (void)initImageDictionary {
- (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]];
您应该仅在主线程上使用UIKit。在ViewController中,尝试以下操作,其中@“BGimage.png”是您的图像文件: //将图像作为视图的bg图案(平铺)放置
//self.view.backgroundColor=[UIColor-WithPatternImage:[UIImage ImageName:@“bImage.png”] 你能发布你已经实现的代码来获得更好的想法吗?添加了一些代码,希望它能帮助你。试试这个链接,检查它,但它基本上是关于uitabbar和其他选项。你想让我暗示一下后者吗?另外,提供的链接与我的问题无关。你不应该在后台线程中调用
setMyImage:
。UIKit不是线程安全的,因此延迟很可能是其副作用。