【问题标题】:Change UIButton tint color while scrolling滚动时更改 UIButton 色调颜色
【发布时间】:2016-10-05 15:08:31
【问题描述】:

我有一个自定义表格视图标题,当用户向下滚动时会变得模糊。我想更改导航栏项目之一的色调颜色(它不是导航栏按钮项目,只是一个 UIButton)。我一直在使用 tableviews contentOffset.y 属性为按钮设置动画,并模糊背景图像视图。我也需要对色调进行此操作,但我可以弄清楚如何。

例如,这是使用 alpha 属性缩小个人资料图片并隐藏某些视图的代码

func movingUp(offset: CGFloat) {
    if infoView.alpha >= 0 {
        let alphaOffset = (offset - 133)/105.0
        infoView.alpha = alphaOffset*1.2
        profilePic.alpha = alphaOffset
    }

    if profileWidth.constant >= 45 {
        profilePic.layer.cornerRadius = (((offset - 133)/105.0) * 90)/2
        profileHeight.constant = ((offset - 133)/105.0) * 90
        profileWidth.constant = ((offset - 133)/105.0) * 90
    }
}

【问题讨论】:

  • 你想设置颜色但是你需要有两个极端的颜色。表格视图顶部和表格视图底部的颜色应该是什么?除非您希望它随机更改,否则您需要一个“开始”和“结束”颜色,您希望它在它们之间进行更改。
  • 上方为白色,下方为黑色。

标签: ios swift


【解决方案1】:

我有一个可以帮助你的答案...http://www.oliverfoggin.com/controlling-animations-with-a-uiscrollview/

这个想法是,您可以通过使用当前内容偏移量并将其用作基于最大偏移量的百分比来在两个极值之间移动。

在您的情况下,这很容易,因为颜色是百分比的简单反函数。

let color = UIColor(white: 1.0 - percentage, alpha: 1.0)

当百分比为 0.0(即表格顶部)时,白色值为 1.0 = 白色。

当百分比为 1.0(即表格底部)时,白色值为 0.0 = 黑色。

我刚刚意识到我的帖子是用 Objective-C 编写的。它应该很容易转换为 Swift,因为它只使用简单的数学函数。如果您希望我转换它,请告诉我,我会放在这里。

【讨论】:

  • 太好了!如果颜色是 UIColor(red: 102/255, green: 102/255, blue: 102/255, alpha: 1)
  • @JeremySh 你需要一个最小值和最大值。您可以在我的帖子中看到我设置了最小和最大色调。此外,如果您对每个值使用相同的数字(例如此处的 102/255),则只需使用 UIColor(white...) 方法而不是 red:green:blue: 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多