UISegmentedContol: обратный tintColor и backgroundColor

У меня есть UISegmentedControl, в который я добавляю несколько белых изображений на прозрачном фоне.

for (index,element) in ELEMENTS.enumerate() {
    segmentedControl.insertSegmentWithImage(element.logo, atIndex: index, animated: false)
}

Для невыбранных сегментов теперь установлен цвет фона segmentedControl.backgroundColor, а цвет изображения - segmentedControl.tintColor. Выбранный сегмент переворачивается, фон устанавливается на .tintColor, а изображение окрашивается в .backgroundColor.

Это работает нормально, но я бы хотел, чтобы все было наоборот: чтобы в выбранном сегменте было изображение, окрашенное с помощью .tintColor, и цвет фона .backgroundColor.

Я знаю, что могу добиться этого, просто переключая цвета в коде, но я использую

let sharedApplication = UIApplication.sharedApplication()
sharedApplication.delegate?.window??.tintColor = newColor

в приложении, чтобы изменить tintColor всех представлений в приложении, поэтому было бы неплохо, если бы это привело к изменению цвета так, как я хочу, в моем сегментированном элементе управления.

Любые идеи?


person Jambaman    schedule 18.10.2015    source источник
comment
Вы можете изменить цвет оттенка только для этого элемента управления, установив UISegmentedControl.tintColor.   -  person mixel    schedule 18.10.2015
comment
Да, но тогда мне придется каждый раз делать sharedApplication.delegate? .Window ??. TintColor = newColor и UISegmentedControl.tintColor = newColor, верно?   -  person Jambaman    schedule 18.10.2015
comment
Нет. Вы используете `sharedApplication.delegate? .Window ??. TintColor = newColor`, чтобы установить глобальный цвет оттенка только один раз. И вы используете UISegmentedControl.tintColor каждый раз, когда хотите установить собственный цвет оттенка для этого элемента управления. Также вы можете попробовать использовать UISegmentedControl.appearance().tintColor, чтобы установить собственный цвет оттенка для всех сегментированных элементов управления в вашем приложении.   -  person mixel    schedule 18.10.2015


Ответы (1)


Вы используете UIApplication.sharedApplication().delegate?.window??.tintColor, чтобы установить глобальный цвет оттенка, который используется всеми элементами управления вашего приложения.

Вы можете использовать UISegmentedControl.appearance().tintColor, чтобы установить собственный цвет оттенка для всех сегментированных элементов управления в вашем приложении.

И вы можете использовать UISegmentedControl.tintColor, чтобы установить собственный цвет оттенка для конкретного сегментированного элемента управления.

Чтобы переключить цвета фона и оттенка для всех сегментированных элементов управления в вашем приложении:

UISegmentedControl.appearance().tintColor = backgroundColor
UISegmentedControl.appearance().backgroundColor = tintColor
person mixel    schedule 18.10.2015