我有一个自定义类别,可以根据我所在的视图为导航栏定义特殊的背景图像。
在类别中,我使用
设置图像- (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]];
答案 0 :(得分:0)
您应该只在主线程上使用UIKit。
答案 1 :(得分:0)
在ViewController中,尝试使用@“BGimage.png”作为图像文件:
//将图像放置为视图的bg图案(图块) //self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@“BGimage.png”]];