使用外觀API設置UISegmentedControl的色調顏色時,每個未選中的段中的文本顏色僅在切換製表符後纔會使用UILabel的顏色。iOS 7.1中的UISegmentedControl Buggy Tint顏色
示例程序來進行測試(下面截圖):
- 裝入程序,並期待在第一個選項卡。一切都很正常,標籤是紅色的,分段是藍色的。
- 切換到第二個選項卡,一切都很好。
- 切換回第一個標籤,您會看到細分已經變成紅色而不是藍色。
應用剛剛裝,一切都很好:
切換標籤後,顏色是錯的:
代碼負責(在應用程序代表進行測試,但發生在其他地方):
[[UILabel appearance] setTextColor:[UIColor redColor]];
[[UISegmentedControl appearance] setTintColor:[UIColor blueColor]];
我已經發送這個信息給蘋果在一個錯誤報告。他們要求一個樣本項目,但我還沒有得到答案。這隻在IOS 7.1上顯示。在7.0,這不會發生。
是否有任何建議或臨時解決方案可以解決此問題?它使我的應用程序看起來很糟糕,即使我不認爲這是我的錯(紅色只是測試,這會讓任何人的應用程序看起來很糟糕)。我曾嘗試通過設置特定控件的色調來手動設置控件,而不是使用外觀API,但問題仍然存在。
我在UISearchBar中修正了一個類似的問題,就是動態地將它的子類從其內部的子視圖層次結構(輸入的sweetspot:'didAddSubview:')中分類出來。作爲地獄的黑客,但是... –
嘗試在調試器中鍵入'[self.segmentControl遞歸描述]',併發布輸出。試試'[[UILabel appearanceWhenContainedIn:[UISegmentedControl class],nil setTextColor:[UIColor blueColor]];' –
感謝Leo! appearanceWhenContainedIn正是我所需要的,它完美的工作。 –