2013-07-28 61 views
4

我想先說說我會在蘋果開發者論壇上發佈這個問題,但由於黑客入侵企圖慘敗,或者無論如何,論壇已經離線近2周,我需要儘快解決這個問題。iOS 7反轉UIDatePicker顏色

在iOS系統7的UIDatePicker看起來是這樣的: enter image description here

和客戶要求是這樣的: enter image description here

(基本上反轉)。

我試過幾件事情:

  1. 背景設置爲黑色,並通過所有的視圖的子視圖循環,直到我到了,顯示的日期本身並改變它們的顏色爲白色的標籤。問題是該視圖只有一個子視圖,並且該子視圖沒有任何子視圖。所以這個解決方案不起作用。 (它在ios6中做過)。

  2. filter應用到視圖的CALayer。問題在於,這隻能在OS X上才能在iOS上使用,原因不明。

  3. UIApperance協議。從我讀過的這個應該可以工作,但是我嘗試過的沒有,我沒有豐富的經驗來弄清楚爲什麼不能。

任何想法我可以嘗試嗎?這甚至有可能嗎?我在解決問題方面犯了錯誤嗎?

+0

你有沒有想過這個想法?我遇到了問題。 – ijason03

+0

@ ijason03不,我沒有。這是不可能的,或者至少對於非Apple開發者來說是不可能的。 – skytz

+0

重複在這裏:http://stackoverflow.com/questions/20181225/customize-text-color-of-uidatepicker-for-ios7-just-like-mailbox-does – Sig

回答

1

嗯,我明白你的沮喪,但iOS7是在NDA。
通常這種視圖是使用圖層製作的,主要是可以讓視角給出3D的想法的sublayerTransform。如果您沒有看到子視圖,我會檢查子圖層。
另一點是,我不會破解太多的意見/圖層層,ios < = 6到ios7的過渡顯示,黑客攻擊不是一個好主意。
UIAppereance協議可能是要走的路,因爲它可以讓你改變你可以改變的東西(不會在將來搞砸),也許你可以設置一個backgroundImage,嘗試設置一個1x1像素的彩色PNG,你也應該查看屬性字符串屬性或文本屬性。

0

您不能自定義日期選擇器的外觀。

我建議的以下之一:

  • 重新設計的用戶界面,使用黑色文本
  • 使用客戶日期選擇器
0

你應該告訴你的客戶,他的建議是違背了iOS 7的設計原則,事實確實如此。我自己並不是iOS 7的忠實粉絲,但我們都應該放棄它。你的客戶應該暫時接受標準的iOS 7 UI,直到他能夠做出明智的判斷。根據他的初始印象設計應用程序是災難的祕訣。

+1

我不知道它是否真的違反了設計原則因爲大多數其他UI元素的顏色都可以改變,包括常規的UIPicker。但我不知道蘋果爲什麼會跳過這一元素的着色能力。 – arlomedia

2

我花了相當多的時間來解決同樣的問題。起初,我已經把UIDatePicker放在黑色背景上,並想知道爲什麼它是看不見的...

我最終放置了一個白色的UIView作爲日期選取器的背景,所以當整個視圖是黑色時,日期選擇器是白色的。它實際上看起來沒問題,雖然幸運的是我沒有一個會指定設計的客戶。

客戶端的一個可能的參數:舊的,iOS7之前的日期選擇器,也有一個預定義的非可自定義的背景。

5

嘗試了這一點:

將這個代碼- (無效)viewDidLoad中

[uiDatePickerOutlet setValue:[UIColor whiteColor] forKey:@"textColor"]; 
+0

是否與iOS 7.0兼容? – demon9733

+0

是的,當然,記得用你的datepicker插件替換uiDatePickerOutlet –

1

不知道這是否仍然適用,但是,斯威夫特3/Xcode 8你可以簡單地這樣做:

let datePicker = UIDatePicker() 
datePicker.datePickerMode = UIDatePickerMode.date 

// Sets the text color 
datePicker.setValue(UIColor.white, forKey: "textColor") 
// Sets the bg color 
datePicker.backgroundColor = UIColor.black.withAlphaComponent(0.6) 

textField.inputView = datePicker