所以我有三個頁面,每個人都有自己的背景顏色,改變顏色
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
那麼,你是否遇到了在問題中顯示的顏色計算問題,或者是在頁面控制器上導航的問題? –