2014-04-01 86 views
1

使用外觀API設置UISegmentedControl的色調顏色時,每個未選中的段中的文本顏色僅在切換製表符後纔會使用UILabel的顏色。iOS 7.1中的UISegmentedControl Buggy Tint顏色

示例程序來進行測試(下面截圖):

  • 裝入程序,並期待在第一個選項卡。一切都很正常,標籤是紅色的,分段是藍色的。
  • 切換到第二個選項卡,一切都很好。
  • 切換回第一個標籤,您會看到細分已經變成紅色而不是藍色。

應用剛剛裝,一切都很好:

App was just loaded, everything is fine.

切換標籤後,顏色是錯的:

After switching tabs, color is wrong.

代碼負責(在應用程序代表進行測試,但發生在其他地方):

[[UILabel appearance] setTextColor:[UIColor redColor]]; 
[[UISegmentedControl appearance] setTintColor:[UIColor blueColor]]; 

我已經發送這個信息給蘋果在一個錯誤報告。他們要求一個樣本項目,但我還沒有得到答案。這隻在IOS 7.1上顯示。在7.0,這不會發生。

是否有任何建議或臨時解決方案可以解決此問題?它使我的應用程序看起來很糟糕,即使我不認爲這是我的錯(紅色只是測試,這會讓任何人的應用程序看起來很糟糕)。我曾嘗試通過設置特定控件的色調來手動設置控件,而不是使用外觀API,但問題仍然存在。

+0

我在UISearchBar中修正了一個類似的問題,就是動態地將它的子類從其內部的子視圖層次結構(輸入的sweetspot:'didAddSubview:')中分類出來。作爲地獄的黑客,但是... –

+1

嘗試在調試器中鍵入'[self.segmentControl遞歸描述]',併發布輸出。試試'[[UILabel appearanceWhenContainedIn:[UISegmentedControl class],nil setTextColor:[UIColor blueColor]];' –

+0

感謝Leo! appearanceWhenContainedIn正是我所需要的,它完美的工作。 –

回答

1

如評論所述,使用[[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil] setTextColor:[UIColor blueColor]];來設置段控件中包含的內部標籤的外觀。

0

每蘋果的文檔:通過使用外觀代理的API設置tintColor財產的iOS不支持7

iOS 7 UI Transition Guide

你也可以指定文本屬性,如UISegmentedControl喜歡的字體,使用setTitleTextAttributes: forState。

相關問題