2016-10-05 123 views
0

我有一个自定义表格视图标题,当用户向下滚动时会变得模糊。编号喜欢改变其中一个导航栏项目项目(它不是一个导航栏按钮项目,只是一个UIButton)的色调颜色。我一直在使用tableviews contentOffset.y属性来为按钮设置动画效果,并模糊背景图片视图。我需要做到这一点的色调,但我可以弄清楚如何。滚动时更改UIButton色调颜色

例如,这是代码,以缩小档案相片和隐藏使用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 
    } 
} 
+0

你想设置颜色,但你需要有两个极端的颜色。颜色应该位于表格视图的顶部和表格视图的底部?除非你想让它随机改变,否则你需要一个你想让它改变的“开始”和“结束”颜色。 – Fogmeister

+0

顶部颜色为白色,底部颜色为黑色。 –

回答

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,因为它只是使用简单的数学函数。如果你想让我转换它,让我知道,我会把它放在这里。

+0

多数民众赞成在伟大的!如果颜色是UIColor(红色:102/255,绿色:102/255,蓝色:102/255,alpha:1) –

+0

@JeremySh,您将需要最小值和最大值。你可以在我的帖子中看到我设置了最低和最高色调。另外,如果您对每个值使用相同的编号(如102/255),则只需使用'UIColor(white ...)'方法而不是'red:green:blue:'方法。 – Fogmeister