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