簡體   English   中英

UITabBar自定義背景圖像應用在一個視圖控制器中,而不是應用在AppDelegate中

[英]UITabBar custom background image applied in one view controller instead of in the AppDelegate

我正在我的iPhone應用程序中處理主題。 我在選項卡欄中有兩個選項卡(時間軸和設置),當用戶轉到第二個選項卡(設置)時,在設置中選擇主題並選擇主題,這將為背景圖像和第一個表格視圖的導航欄設置樣式第一個標簽(時間軸)中的控制器。 這可行。

我想通過標簽欄實現相同的目的,因此標簽欄會隨着背景圖像和導航欄一起變化。

在時間軸表視圖中,將以下代碼放入viewWillAppear中:

UIImage *tabBackgroundImage = [UIImage imageNamed:@"Purplepinktopp.png"];
[[UITabBar appearance] setBackgroundImage:tabBackgroundImage];

但是,選項卡欄永遠不會改變。 更改選項卡欄的唯一方法是在AppDelegate中,然后隨處更改它。 我需要允許用戶選擇一個主題,並且主題會相應更改,因此我需要在每個視圖控制器的基礎上進行更改,這與導航欄完全相同。

在此時間軸表視圖的viewWillAppear中,我將導航欄設置為:

UIImage *navBackgroundImage = [UIImage imageNamed:@"Purplepinknav.png"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];

一直有效。 對於上面的代碼,這對於選項卡欄不起作用。

編輯:我已經將apperanceWhenContainedIn添加到viewWillAppear中:

UIImage *tabBackgroundImage = [UIImage imageNamed:@"SolidPurple.png"];
[[UITabBar appearance] setBackgroundImage:tabBackgroundImage];

[UITabBar appearanceWhenContainedIn:[UITabBar class], [UITabBar class], nil];

但這似乎無濟於事。

我該如何解決這個問題? 任何幫助將不勝感激。

您可以嘗試對UIAppearance代理調用進行改進。

+ (id)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass,...

僅當特定的視圖控制器子類中包含UIAppearance Proxy兼容對象的外觀時,才將其外觀設置為提供的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM