2016-05-01 21 views
3

UIPickerViewsの背景にカスタムUIColorを割り当てるときに奇妙な色が表示されます。の色は、あなたが見ることができるように enter image description here :ここでは次のようになりますUIPickerView Swift上の奇妙なカスタム背景色

myTextView.backgroundColor = myTextViewBackgroundColor 
keywordPicker.backgroundColor = myTextViewBackgroundColor 

次のように私はtextViewsとpickerViewsの色を作成しました:

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

をそして私はとしてそれを割り当てますtextViewsとピッカーの色が異なります。この違いは、このスナップショットよりもデバイス上でより顕著に見えますが、カスタムカラーは灰色のように見えます。デフォルトのグレーの背景とほぼ同じです。私は標準UIColorを選択した場合、正しく動作するように見える enter image description here :私は上記のpickerView色項目をコメントアウトした場合

は、私はグレー色の背景を取得します。このインスタンスでは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

この応答は、原因を公開していません。他の人に役立つように私の決議を掲載しました。選択した行表示のラベルを作成し、ラベルの背景色を設定しました。このラベルの色はカスタム設定に該当します。

私はApp Pieを作ることに賛辞を贈りました。そして、記事https://makeapppie.com/2014/10/21/swift-swift-formatting-a-uipickerview/ がインスピレーションを与えました。白に背景を設定します。ピッカーは、私が作成したtextViewsのように見えるよう

keywordPicker?.backgroundColor = UIColor.whiteColor() 

はまた、私は境界線を追加しました:

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がカスタムピッカーをinputViewとして持つ場合は同じグリッチがありますが、ユーザがのnormalキーボードとしてinputViewグリッチは表示されません。ラッパー表示するには、このハックを追加し、当社の特定のケースで

は、問題を修正:

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

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

またwillMoveToSuperview:方法で色を設定しようとしたが、それは動作しません。