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