所以我有三个页面,每个人都有自己的背景颜色,改变颜色
UIColor.blue; UIColor.red; UIColor.yellow
当我从红色到绿色的滚动,我想褪色成绿色,我已经用这个代码实现了。 (忽略自定义UIColor值,我简化了解释)
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
let point = scrollView.contentOffset
var percentComplete: CGFloat
percentComplete = fabs(point.x - view.frame.size.width)/view.frame.size.width
if percentComplete != 0{
self.view.backgroundColor = fadeFromColor(fromColor: UIColor(red:0.20, green:0.60, blue:0.86, alpha:1.0), toColor: UIColor(red:0.91, green:0.30, blue:0.24, alpha:1.0), withPercentage: percentComplete)
}
}
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
var red = (toRed - fromRed) * withPercentage + fromRed
var green = (toGreen - fromGreen) * withPercentage + fromGreen
var blue = (toBlue - fromBlue) * withPercentage + fromBlue
var alpha = (toAlpha - fromAlpha) * withPercentage + fromAlpha
// return the fade colour
return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
问题是,我不知道如何让它淡出。它变成了旧的颜色。
我怎么会把它淡化回来和第四?谢谢
您应该只是扭转你的计算渐变色'RGBA'值的逻辑和使用褪色回到原来的颜色。 –
问题是,如果我有多个页面,我不知道如何获取目的地以确定要使用的颜色。 – Will
那么,你是否遇到了在问题中显示的颜色计算问题,或者是在页面控制器上导航的问题? –