2016-01-19 7 views
1

Я программно добавляю панель инструментов в UIPickerView, чтобы у меня была кнопка «Готово», и я хочу сделать UIToolBar черным и элементы панели белые. Док говорит, что если вам нужен непрозрачный UIToolBar, вы должны установить его полупрозрачность на false и установить barStyle на черный. Я сделал это, и UIToolBar остается белым.Невозможно сделать черный цвет UIToolBar с оттенком белого оттенка кнопки (ios 9, Swift)

private func pickerViewSetup() { 

    let pickerView = UIPickerView() 
    pickerView.delegate = self 
    pickerView.dataSource = self 
    pickerView.backgroundColor = .whiteColor() 
    pickerView.showsSelectionIndicator = true 

    let toolBar = UIToolbar() 
    toolBar.translucent = false 
    toolBar.barStyle = .Black 

    let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "donePicker") 
    doneButton.tintColor = UIColor.whiteColor() 

    let flexibleSpaceItem = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: self, action: "Flexible Space") 

    toolBar.setItems([flexibleSpaceItem, doneButton], animated: false) 
    toolBar.userInteractionEnabled = true 

    pickerTextField.inputView = pickerView 
    pickerTextField.inputAccessoryView = toolBar 
} 

ответ

0

toolBar не от желаемого цвета, потому что toolBar.backgroundColor не правильно установлены. Установите его на BlackColor с

toolBar.backgroundColor = UIColor.BlackColor() 
+0

@SergueiFedorov это именно то, что позволит решить проблему пользователя, так что это единственный ответ, и ** это ответ ** –

+0

Просто установка цвета фона не работает для меня , См. Мой ответ. – u84six

0

Этого недостаточно. Добавить

toolBar.backgroundColor = UIColor.BlackColor(); 
+0

Это ничего не меняло. Еще белый. – u84six

4

Все, что мне нужно сделать, это добавить toolBar.sizeToFit вызова() и что фиксированные все цветовые проблемы. Вот полный рабочий код:

private func pickerViewSetup() { 

    let pickerView = UIPickerView() 
    pickerView.delegate = self 
    pickerView.dataSource = self 
    pickerView.backgroundColor = .whiteColor() 
    pickerView.showsSelectionIndicator = true 

    let toolBar = UIToolbar() 
    toolBar.barStyle = UIBarStyle.Black 
    toolBar.tintColor = UIColor.whiteColor() 
    toolBar.sizeToFit() 

    let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "donePicker") 
    let flexibleSpaceItem = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: self, action: "Flexible Space") 

    toolBar.setItems([flexibleSpaceItem, doneButton], animated: false) 
    toolBar.userInteractionEnabled = true 

    pickerTextField.inputView = pickerView 
    pickerTextField.inputAccessoryView = toolBar 
} 
+1

вызов 'sizeToFit()' так неявно !! – pash3r

+0

Просто для будущих разработчиков, если ваш 'UIBarButtonItem' не доступен для кликов, то это решение. 'sizeToFit()' исправил также эту проблему, которую я имел. –

4

Спасибо. Ответ u84six. Вы можете сделать так:

toolBar.tintColor = UIColor.whiteColor()//"Done" button colour 
toolBar.barTintColor = UIColor.blackColor()// bar background colour 
toolBar.sizeToFit()// Very important, the barTintColor will not work without this