У меня есть UIButton с другим изображением для обычного и выбранного состояния. Также мне нужно изменить оттенок кнопки в зависимости от темы приложения.Избегайте перевернутых цветов UIButton, если выбрано
Но когда я устанавливаю кнопку в выбранное состояние для переключения изображения, оно инвертирует его цвета.
- (void)setLike:(BOOL)selected {
self.likeButton.selected = selected;
if (selected) {
self.likeButton.tintColor = [Theme getTintColor];
} else {
self.likeButton.tintColor = [Theme getLightColor];
}
}
Нормальное состояние
Actual Выбранный
Желаемая Selected
Примечание: я не могу изменить изображение, потому что этот код используется в других местах приложения с различными выбранными и невыбранными изображениями.
- (void)setLike:(BOOL)selected {
if (selected) {
[self.likeButton setImage:[UIImage imageNamed:@"Liked"] forState:UIControlStateNormal];
self.likeButton.tintColor = [Theme getTintColor];
} else {
[self.likeButton setImage:[UIImage imageNamed:@"Like"] forState:UIControlStateNormal];
self.likeButton.tintColor = [Theme getLightBaseColor];
}
}
Вам не нужно вручную изменять изображение, когда кнопка выбрана (или выделена). По настройкам различных изображений для UIControlStateNormal, UIControlStateHighlighted, UIControlStateSelected вы можете получить нужное поведение! – Groot
Вот как я это сделал. Но когда я меняю его на выбранный так, чтобы он отображал изображение UIControlStateSelected, iOS инвертирует мои цвета. –