Попытка изменить цвет заголовка UIButton и рамку при прокрутке прокрутки - PullRequest
2 голосов
/ 20 мая 2019

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

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

Кнопка, которую я пытаюсь изменить, - кнопка регистрации

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let pageNum = Int(scrollView.contentOffset.x / scrollView.frame.size.width)

    if(pageNum == 2) {
        UIView.animate(withDuration: 0.3) {
            self.nextButton.layer.opacity = 0.0
            self.signupButton.backgroundColor = UIColor(red: 75/255, green: 159/255, blue: 186/255, alpha: 1.0)
            self.signupButton.frame.size = CGSize(width: UIScreen.main.bounds.width - 69,height: 45)
            self.signupButton.setTitleColor(.white, for: .normal)
        }

    } else {
        UIView.animate(withDuration: 0.3) {
            self.nextButton.layer.opacity = 1.0
            self.signupButton.backgroundColor = .clear
            self.signupButton.setTitleColor(UIColor(red: 75/255, green: 159/255, blue: 186/255, alpha: 1.0), for: .normal)
        }
    }

    UIView.animate(withDuration: 0.2) {
        self.pageControl.currentPage = pageNum
    }
}

Я ожидал, что изменится и цвет заголовка, и рамка, но меняются только цвета. Похоже, что UIButton.setTitleColor() мешает смене кадра.

1 Ответ

0 голосов
/ 21 мая 2019

Вместо установки UIButton's titleColor с использованием метода setTitleColor(_:for:) измените color с помощью кнопок titleLabel, т. Е.

UIView.animate(withDuration: 0.3) {
    self.nextButton.layer.opacity = 0.0
    self.signupButton.backgroundColor = UIColor(red: 75/255, green: 159/255, blue: 186/255, alpha: 1.0)
    self.signupButton.frame.size = CGSize(width: UIScreen.main.bounds.width - 69,height: 45)
    self.signupButton.titleLabel?.textColor = .white
}
...