2016-05-01 234 views
3

將自定義UIColor分配給UIPickerViews的背景時,出現奇怪的顏色。我已經創建了textViews和pickerViews顏色如下:UIPickerView上的奇怪自定義背景顏色Swift

let myTextViewBackgroundColor = UIColor(red: 192.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 0.35) 

我將其指定爲:

myTextView.backgroundColor = myTextViewBackgroundColor 
keywordPicker.backgroundColor = myTextViewBackgroundColor 

這裏是什麼樣子: enter image description here 正如你所看到的,在顏色textViews和選擇器的顏色是不同的。設備上的差異似乎比在此快照中更明顯,但自定義顏色看起來很渾濁,就像混合了默認的灰色背景一樣。

如果我註釋掉pickerView顏色項以上,我得到一個灰色的背景: enter image description here 如果讓我選擇一個標準的UIColor,它似乎正常工作。 UIColor.yellowColor在這個例子中。如果我選擇白色,那看起來也不錯。 enter image description here 我在代碼中創建pickerView並將其分配給沒有分配背景顏色的textField。

var keywordPicker : UIPickerView? 

keywordPicker = UIPickerView() 
keywordPicker?.delegate = self 
keywordPicker?.dataSource = self 

keywordsForItemTextField.inputView = keywordPicker 
keywordPicker.backgroundColor = myTextViewBackgroundColor 

而對於它的價值,我有我與它自己的視圖控制器模態屏幕創建日期選擇器。在這種情況下,選取器會在故事板上創建。我仍然使用代碼分配背景顏色,並且選取器顯示正確的顏色。

回答

0

我敢肯定,這是對UIPickerView具有在它銀灰色的過濾器總是一個結果(注意它是灰色的,當你把它設置爲白色?)

+0

當我將它設置爲白色時,它看起來就像背景的其餘部分 - 它看起來不灰色。再次,我從故事板中分別創建了一個日期選擇器,並且我的自定義顏色看起來與我所期望的完全一致。 (上面的灰色照片是我沒有指定任何背景顏色的情況)。 – user2698617

0

這種反應不公開的原因這個問題,但我已經包含了我的決議,以防止它會幫助其他人。我爲選定的行顯示創建了一個標籤並設置了標籤的背景顏色。該標籤顏色對於自定義設置是真實的。

我點了一個製作應用餡餅和文章https://makeapppie.com/2014/10/21/swift-swift-formatting-a-uipickerview/ 這是靈感。背景設置爲白色:

keywordPicker?.backgroundColor = UIColor.whiteColor() 

而且我加了邊框使選擇器看起來就像我創建了textViews:

keywordPicker?.layer.borderColor = UIColor(colorLiteralRed: 212.0/255.0, green: 212.0/255.0, blue: 212.0/255.0, alpha: 1.0).CGColor 
    keywordPicker?.layer.borderWidth = 1.0 
    keywordPicker?.layer.cornerRadius = 7.0 
    keywordPicker?.layer.masksToBounds = true 

設置標籤:

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView { 

    let pickerLabel = UILabel() 
    var titleData : String = String() 

    if pickerView == keywordPicker { 
     titleData = crsuKeywordPickerList![row] 
    } 
    pickerLabel.text = titleData 

    pickerLabel.backgroundColor = myPickerBackgroundColor 
    pickerLabel.textAlignment = .Center 

    return pickerLabel 

}//pickerView:viewForRow:... 

The result: 

enter image description here

As a second option as discussed above, if you instantiate the picker on the storyboard this problem does not appear. 
0

在我們的例子中,我們有一個圍繞UIPickerView的包裝來構建自定義日期選擇器。設置UITextField類的外觀代理爲inputView使用暗模式後,如果第一個textField變爲活動狀態,那麼與的自定義選擇器一樣,但如果用戶以前使用正常情況下與textField進行交互鍵盤 as inputView毛刺不會出現。

在我們的特定情況下加入這個技巧來包裝視圖解決這個問題:

- (void)willMoveToWindow:(UIWindow *)newWindow 
{ 
    [super willMoveToWindow:newWindow]; 

    if (newWindow) { 
     self.pickerView.backgroundColor = self.colorPalette.inputViewBackgroundColor; 
    } 
} 

我們也嘗試設置在willMoveToSuperview:方法的顏色,但不起作用。