2011-03-07 29 views
4

所以我有一個拆分視圖應用程序我正在工作,並遇到了一個奇怪的UI錯誤。這是我最好的嘗試來解釋它。如果我以橫向模式加載應用程序,根控制器的頂部導航欄是正確的顏色。我在rootView的viewWillAppear中方法做這個:iPad - 彈出幀顏色

self.rvBar.tintColor = [UIColor colorWithRed:59.0/255 
           green:115.0/255 
        blue:185.0/255 
         alpha:1]; 

現在,當我旋轉設備,並通過酥料餅的顯示來看,酥料餅是黑色的。你知道如何改變popover的顏色到同一個藍色嗎?我已經嘗試在拆分視圖控制器委託中的willHide/ShowViewController方法中執行此操作,但似乎沒有任何效果。

現在第二部分,當我旋轉回景觀時,上面的行再次被調用,但不是顯示藍色條,而是現在灰色!有沒有人見過splitview的行爲像之前,如果是這樣,需要做些什麼來解決它?提前致謝。

+0

你有沒有嘗試過在viewDidAppear方法中做它? – 2011-03-07 21:47:19

+0

是的,仍然沒有骰子。 – gabaum10 2011-03-07 22:01:59

回答

1

如果有人仍然在想,我發現瞭解決這個問題的方法。

在做了一些挖掘之後,我發現有一個Apple的bug會禁用對UIToolBar tintColor屬性的修改,並且會陷入任何狀態。我不得不發送消息給tintColor屬性以便告訴它它是可修改的。

extern id objc_msgSend (id, SEL, BOOL); 
objc_msgSend([(UINavigationController *)aViewController navigationBar], @selector(_setDisableCustomTint:), NO); 
/* Set the tintColor again */ 
[(UINavigationController *)aViewController navigationBar].tintColor = [UIColor colorWithRed:59.0/255 
                         green:115.0/255 
                         blue:185.0/255 
                         alpha:1]; 

顯然,這是不能接受的,如果你打算提交申請到蘋果商店,但我的目的,這並獲得成功。希望這可以幫助你們中的一些人...

+0

這是一種解決方案,但正如您所說,它不適用於appStore - 因此無關緊要。 – chewy 2012-02-09 13:05:16

+2

無論你說什麼特克斯。出於我的目的,我們有一個未被公衆使用的應用程序,因此它是相關的。對於那些需要解決方案的人而言。 – gabaum10 2012-02-09 15:03:07

+0

好,我刪除了向下的箭頭;) – chewy 2012-02-09 15:32:54

2

我想這一個基本SplitViewController項目(在RootViewController的):

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:59.0/255 
                     green:115.0/255 
                     blue:185.0/255 
                     alpha:1]; 
} 

,它工作正常。當你說popover仍然是黑色時,你的意思是標題背景是黑色的? (對我來說它是藍色的,彈出邊框是黑色的)。

也許問題來自其他地方,你如何設置你的rvBar屬性?

+0

是的,標題背景保持黑色。我知道你不能改變彈出框的顏色,但是爲什麼一旦你將導航欄旋轉回去就會變灰。我正在設置IB的rvBar屬性。這很奇怪,因爲它可以在視圖加載時起作用,但一旦彈出窗口顯示並且它迴轉,就會變成灰色...... – gabaum10 2011-03-08 14:56:58

+0

您是否試圖直接在IB中設置導航欄色調顏色,而不是通過編程方式。我無法設法重現錯誤。 – florian 2011-03-08 16:50:09

+0

分割視圖控制器的設置方式,出於某種原因無法更改。沒有選擇這樣做。非常刺激... – gabaum10 2011-03-08 20:42:25

0

您不能更改PopovertintColor,該屬性不存在。

欲瞭解更多有關Popover的信息,請查看UIPopoverController Class Reference

+0

好吧,我覺得那是這種情況。但是,這仍然不能解釋爲什麼一旦按鈕失效並且視圖重新出現在左窗格中時它將灰條變爲灰色...... – gabaum10 2011-03-08 14:50:20

0

你也可以通過Interface Builder更改導航欄(Rootview控制器的);只需從左邊的列表中選擇導航欄,並通過從rgb矩陣中選擇或選擇任何其他方式來更改tint屬性。