Я пытаюсь постепенно уменьшить цвет фона в PageViewController
. Я хочу добавить цвет от страницы к другой.
До сих пор я пытался использовать базовый scrollView
PageViewController
, реализуя функцию scrollViewDidScroll
и устанавливая цвет фона scrollview
.
Посмотрите на следующий код:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset.x
guard lowerIndex >= 0, upperIndex < colors.count else { return }
let percentComplete = (offset / CGFloat(colors.count)) / (scrollView.frame.width / CGFloat(colors.count))
scrollView.backgroundColor = fadeFromColor(fromColor: colorCurrent, toColor: colorAfter, withPercentage: percentComplete)
}
Эта функция использует пользовательскую функцию fadeFromColor, которая определяется следующим образом:
func fadeFromColor(fromColor: UIColor, toColor: UIColor, withPercentage: CGFloat) -> UIColor {
var fromRed: CGFloat = 0.0
var fromGreen: CGFloat = 0.0
var fromBlue: CGFloat = 0.0
var fromAlpha: CGFloat = 0.0
fromColor.getRed(&fromRed, green: &fromGreen, blue: &fromBlue, alpha: &fromAlpha)
var toRed: CGFloat = 0.0
var toGreen: CGFloat = 0.0
var toBlue: CGFloat = 0.0
var toAlpha: CGFloat = 0.0
toColor.getRed(&toRed, green: &toGreen, blue: &toBlue, alpha: &toAlpha)
// calculate the actual RGBA values of the fade colour
let red = (toRed - fromRed) * withPercentage + fromRed
let green = (toGreen - fromGreen) * withPercentage + fromGreen
let blue = (toBlue - fromBlue) * withPercentage + fromBlue
let alpha = (toAlpha - fromAlpha) * withPercentage + fromAlpha
// return the fade colour
return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
В настоящее время у меня проблемы с получением правильного цвета в нужное время.
У вас есть идея лучше, чтобы решить мою проблему? Или ты считаешь, что хотя бы моя идея верна?