- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 ScrollView ,当它向下滚动时背景会改变颜色。
我知道我可以使用 UIView 动画来实现自动化。但是我想根据滚动的百分比设置颜色。
我想设置 0% 和 100% 颜色,当前颜色将在 scrollViewDidScroll
上计算和设置
0% 50% 100%
yellow green blue
编辑
如何根据滚动位置计算新颜色?
最佳答案
这是 Swift 3 的解决方案。
// This function calculates a new color by blending the two colors.
// A percent of 0.0 gives the "from" color
// A percent of 1.0 gives the "to" color
// Any other percent gives an appropriate color in between the two
func blend(from: UIColor, to: UIColor, percent: Double) -> UIColor {
var fR : CGFloat = 0.0
var fG : CGFloat = 0.0
var fB : CGFloat = 0.0
var tR : CGFloat = 0.0
var tG : CGFloat = 0.0
var tB : CGFloat = 0.0
from.getRed(&fR, green: &fG, blue: &fB, alpha: nil)
to.getRed(&tR, green: &tG, blue: &tB, alpha: nil)
let dR = tR - fR
let dG = tG - fG
let dB = tB - fB
let rR = fR + dR * CGFloat(percent)
let rG = fG + dG * CGFloat(percent)
let rB = fB + dB * CGFloat(percent)
return UIColor(red: rR, green: rG, blue: rB, alpha: 1.0)
}
// Pass in the scroll percentage to get the appropriate color
func scrollColor(percent: Double) -> UIColor {
var start : UIColor
var end : UIColor
var perc = percent
if percent < 0.5 {
// If the scroll percentage is 0.0..<0.5 blend between yellow and green
start = UIColor.yellow
end = UIColor.green
} else {
// If the scroll percentage is 0.5..1.0 blend between green and blue
start = UIColor.green
end = UIColor.blue
perc -= 0.5
}
return blend(from: start, to: end, percent: perc * 2.0)
}
// In your "scrollViewDidScroll" delegate, calculate the scroll
// percentage as a value from 0.0 to 1.0
// Then call "scrollColor"
let scrollPercentage = ... // your calculation
let scrollColor = scrollColor(percent: scrollPercentage)
关于ios - 根据滚动逐渐改变背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39778526/
我想要一个可以逐渐将页面底部的不透明度从 0 更改为 1 的函数。 我在元素的顶部使用了类似的功能,但我使用的不是淡入,而是淡出。创建它相当容易,但在页面底部使用设置的阈值淡入是一场噩梦。 经过研究,
li 状态是关闭和打开。 闭合:颜色为黑色(没有光照,相互折叠)。 打开:颜色为红色(有光,全视野)。 我希望颜色从两个元素之间的点开始淡化,以表明阴影从轴心开始,直到它们关闭。 $('button'
我的问题很简单: 1)我有一个扩展 JFrame 的主类。 2)该类内部有一个 JPanel,其顶部有一个 BufferedImage。 3)最后还有一个 JButton,我称之为“Fire”..这就
我有这个立方体,我想在延迟 3000 后将其转换为不同的 X 和 Y 点。我无法理解如何在 jQuery 的帮助下做到这一点。这是一个JS Fiddle .下面是代码。 JS // code for
我们如何向背景图像添加黑色阴影,阴影从不透明度 1 开始逐渐降低到不透明度 0,在图像的所有 4 个边上? (至少 50 像素值的“降低阴影不透明度”。box-shadow 仅提供少量不透明度逐渐下降
我是一名优秀的程序员,十分优秀!