2017-02-06 3 views
1

Я пытаюсь использовать API-интерфейс прокси-интерфейса для применения некоторых цветов по умолчанию к некоторым элементам управления, но у меня возникла проблема.UIImageView.appearance является переопределяющим UISegmentedControl.appearance

Когда я применяю оттенок цвета, чтобы UISegmentedControl использовать что-то вроде ...

UISegmentedControl.appearance().tintColor = UIColor.red 

Он генерирует это ...

Red Tint

Все хорошо, но когда я добавить ...

UIImageView.appearance().tintColor = UIColor.green 

оно изменяется на ...

Green Tint

Просто чтобы быть ясно, я ОБА эти строки в моем коде

UISegmentedControl.appearance().tintColor = UIColor.red 
UIImageView.appearance().tintColor = UIColor.green 

Это не имеет значения, в каком порядке я их называю, результат тот же, что UIImageView свойства override UISegmentedControl s

Я потратил более полудня, пытаясь найти решение этой проблемы, но не может найти ничего, что сработает.

Запуск Xcode 8.2 прошивки 10 Swift 3

Что я делаю неправильно и как я могу исправить?

+0

@PuneetSharma У меня не было возможности попробовать настройки внешнего вида изображения все же, на мой todo list, просто хочу знать, если я делал что-то глупое: P – MadProgrammer

+1

Я тестировал его на раскадровке, и это сработало. Я думаю, вы не были глупыми, но API-интерфейсы внешнего вида должны быть сложными, как и все глобальные сферы. Он прост в использовании, но его трудно предсказать. –

ответ

4

Я не уверен в этом, но я думаю, UISegmentedControl использует UIImageView для создания сегментов, то есть сегментов мы видим внутри сегментированные управления являются UIImageViews и не UIViews. UISegmentedControl даже имеет методы setImage для определенного сегмента.

Если это верно, то мы можем использовать appearanceWhenContainedIn API из UIAppearance установить вид изображения оттенок цвета, как это:

UIImageView.appearance(whenContainedInInstancesOf: [UISegmentedControl.self]).tintColor = UIColor.red 
UIImageView.appearance().tintColor = UIColor.green 
+1

Ох, хорошая идея, я сделаю это, когда вернусь домой! – MadProgrammer

+1

Да, отлично работает, это экономит мне много усилий! Cheers – MadProgrammer

+1

Рад помочь. Ура !! –

Смежные вопросы