Вопрос о заполнении пустого сердца при нажатии кнопки uiButton - PullRequest
1 голос
/ 14 октября 2019

Я показываю сердца каждый раз, когда нажимаю кнопку. При щелчке пустые сердца заполняются, а при повторном щелчке заполненные сердца пусты.

@IBOutlet weak var likeBtn: UIButton!

override func viewDidLoad() {
        super.viewDidLoad()

        likeBtn.addTarget(self, action: #selector(likeBtnClicked(_:)), for: .touchUpInside)
    }
@objc func likeBtnClicked(_ sender: UIButton) {
        DispatchQueue.main.async {
            if self.isSelected == false {
                sender.tintColor = .white
                self.isSelected = true
            } else if self.isSelected == true {
                sender.tintColor = .red
                self.isSelected = false
            }
        }
    }

enter image description here

Как сделатьвышеупомянутое сердце заполняется красным при нажатии кнопки?

Я хочу создать две ситуации с одним изображением.

1. Сердце заполняется красным при нажатии кнопки 2. Нажмите еще раз, чтобы очистить сердце

1 Ответ

3 голосов
/ 14 октября 2019

Если ваша идея - использовать одно изображение, вам нужно использовать его как глиф. Это означает, что вы должны стереть данные о цвете и каждый раз подкрашивать их нужным цветом. Теперь, если у вас есть прозрачная заливка и цветная рамка, которая не будет работать, потому что вы не можете заполнить UIImage цветами, игнорируя исходный цвет границы. У вас есть несколько вариантов здесь.

Опция 1 - использовать два изображения

let deselectedImage = UIImage(named: "heart")
let selectedImage = UIImage(named: "heart-filled")

Опция 2 - использовать одно изображение и играть в режиме рендеринга

let deselectedImage = UIImage(named: "heart")?.withRenderingMode(.alwaysOriginal)
let selectedImage = UIImage(named: "heart")?.withRenderingMode(.alwaysTemplate)
selectedImage.tintColor = .red

Опция 3 - Использование цвета границы слоя и режим рендеринга

То же, что и в варианте 2, но вам понадобится изображение белого сердца, но в режиме отмены выбора вы также установитецвет границы для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...