2012-04-12 21 views
0

偏移我其中我重寫的drawRect提供一種PNG具有透明度作爲背景一個子類UINavigationBar的。每一件事情按預期工作,攢了1個像素的空間在酒吧的頂部(我可以看到下面的圖在空間中移動)。定製UINavigationBar的是由1個像素在上方

screen shot

我能找到唯一的事情就是這個問題,這聽起來像我的問題,但我不知道該如何解釋什麼:Empty space of 1 pixel above UINavigationBar

我已經驗證PNG文件不在圖像頂部不具有1個像素的透明度。
重寫在子類UINavigationBar的:

- (void)drawRect:(CGRect)rect { 

[_bg drawInRect:CGRectMake(0, 0, _bg.size.width, _bg.size.height)]; 
// showing correct bounds - drawRect: 0.000000, 0.000000, 320.000000, 85.000000 
NSLog(@"drawRect: %f, %f, %f, %f", rect.origin.x, 
            rect.origin.y, 
            rect.size.width, 
            rect.size.height); 

}

- (CGSize)sizeThatFits:(CGSize)size { 
CGRect frame = [[UIScreen mainScreen] applicationFrame]; 
CGSize sz = CGSizeMake(frame.size.width, _bg.size.height); 
NSLog(@"sizefits"); 
return sz; 

}

感謝您的幫助!

+0

您使用的是24/32位png圖像還是8位圖像? – 2012-04-13 02:35:24

+0

喜他,感謝您的答覆。我雙重驗證,它是32位。有任何想法嗎? – Matt 2012-04-13 17:47:54

回答

0

,我與我的自定義導航欄同樣的問題,雖然我用UIAppearance代理設置自定義背景圖片,而不是重寫的drawRect的:.這是我的快速修復,在viewWillAppear中:在根視圖控制器上:

// Make sure nav bar is flush with status bar (iOS 5 iPhone portrait somehow gives status bar height 20 and nav bar y 20.5, so we miss a pixel). 
CGRect navBarFrame = self.navigationController.navigationBar.frame; 
navBarFrame.origin.y = [UIApplication sharedApplication].statusBarFrame.size.height; 
self.navigationController.navigationBar.frame = navBarFrame;