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