2

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

4

2 回答 2

2

从这里转换了一个简单的 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

}
于 2016-11-16T09:09:14.903 回答
1

这是为您准备的底部和顶部渐变:

https://github.com/jnozzi/JLNFadingScrollView

您可以配置它的淡入淡出颜色(通常是灰色/黑色作为阴影或滚动视图的背景色作为'fade-to-nothing')

于 2012-11-15T11:06:58.420 回答