2013-04-25 18 views
0

我繼承UIToolBar,這裏是我如何重寫UIToolBar的drawRect方法:當UIToolBar具有自定義背景的子類時,工具欄的下半部分是黑色的?

- (void)drawRect:(CGRect)rect 
{ 
    UIImage *backgroundImage = [UIImage imageNamed:@"UIToolBar_Background.png"]; 
    [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 

應用程序使用與initWithNavigationBarClass方法初始化一個UINavigationController範例。

的問題是,該工具欄的下半部是黑色的? UIToolBar_Background.png高度爲44像素(或視網膜爲88)。它不應該是下半身黑色。

回答

0

通過繼承UIToolBar並重寫drawRect中,可以消除一些UIToolBar自己繪製的。爲什麼不使用外觀API來設置背景圖片:

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"UIToolBar_Background.png"] 
         forToolbarPosition:UIToolbarPositionBottom 
           barMetrics:UIBarMetricsDefault]; 

或者,你可以使用子類化路線,只是確保你調用[超級的drawRect:RECT]:

- (void)drawRect:(CGRect)rect 
{ 
    [super drawRect:rect]; 
    UIImage *backgroundImage = [UIImage imageNamed:@"UIToolBar_Background.png"]; 
    [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
做自己的繪圖之前
+0

感謝馬塞爾的迴應,關鍵的原因是我需要在我的工具欄中間有一個超大的按鈕。就像這些教程中顯示的那樣。 http://idevrecipes.com/2010/12/16/raised-center-tab-bar-button/現在我一直在viewController上添加一個工具欄作爲視圖,但我正在努力讓它變得正確Y位置始終。與4英寸顯示器。所以我試圖將所有內容封裝在UIToolbar中。 – drc 2013-04-25 13:32:52

+0

我參與了[super drawRect:rect];仍然有一半的工具欄被切斷。這是使用默認的tintColour或barStyle嗎? – drc 2013-04-25 14:44:47

+0

.png在下半部分具有alpha透明度。我相信這是造成這個問題的原因。 – drc 2013-04-25 14:58:10