淡出NSScrollView的顶部和底部

时间:2012-05-07 20:48:30

标签: objective-c xcode macos cocoa nsscrollview

有没有办法让NSScrollView的顶部和底部边缘淡入淡出?我已经看到一些代码/答案通过向子视图添加某种颜色的渐变来“淡化”它,基本上,用背景颜色覆盖顶部和底部。但是,我希望它实际淡入alpha = 0,因此您实际上可以看到滚动视图后面的视图内容。我计划我的应用程序在这个NSScrollView背后有不同的背景,并且在边框上没有任何过渡,它看起来很便宜。

2 个答案:

答案 0 :(得分:1)

这是一个现成的底部&顶部褪色:

https://github.com/jnozzi/JLNFadingScrollView

  

您可以配置其淡入淡出颜色(通常为阴影的灰色/黑色或“淡入淡出”的滚动视图的背景颜色)

答案 1 :(得分:1)

here的简单iOS实现转换为使用macOS Swift。

将它放在NSScrollView子类中:

let fadePercentage: Float = 0.05

override func layout() {

    super.layout()

    let transparent = NSColor.clear.cgColor
    let opaque = NSColor.controlDarkShadowColor.cgColor

    let maskLayer = CALayer()
    maskLayer.frame = self.bounds

    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = NSMakeRect(self.bounds.origin.x, 0, self.bounds.size.width, self.bounds.size.height)
    gradientLayer.colors = [transparent, opaque, opaque, transparent]
    gradientLayer.locations = [0, NSNumber(value: fadePercentage), NSNumber(value: 1 - fadePercentage), 1]

    maskLayer.addSublayer(gradientLayer)
    self.layer?.mask = maskLayer

}