Objective c 淡出视图的顶部和底部
有没有办法使NSScrollView的上边缘和下边缘淡入透明状态?我见过一些代码/答案,它们通过在子视图中添加某种颜色的渐变来“淡出”,基本上,用背景色覆盖顶部和底部。但是,我希望它实际淡入alpha=0,这样您就可以实际看到滚动视图后面的视图内容。我正在计划我的应用程序在这个NSScrollView的背后有各种背景,而且在边框上没有任何过渡,它看起来非常便宜。这是一个现成的底部和顶部渐变: 您可以配置其淡入淡出颜色(通常为灰色/黑色表示阴影,或滚动视图的背景色表示“淡入淡出为无”)Objective c 淡出视图的顶部和底部,objective-c,xcode,macos,cocoa,nsscrollview,Objective C,Xcode,Macos,Cocoa,Nsscrollview,有没有办法使NSScrollView的上边缘和下边缘淡入透明状态?我见过一些代码/答案,它们通过在子视图中添加某种颜色的渐变来“淡出”,基本上,用背景色覆盖顶部和底部。但是,我希望它实际淡入alpha=0,这样您就可以实际看到滚动视图后面的视图内容。我正在计划我的应用程序在这个NSScrollView的背后有各种背景,而且在边框上没有任何过渡,它看起来非常便宜。这是一个现成的底部和顶部渐变: 您可以配置其淡入淡出颜色(通常为灰色/黑色表示阴影,或滚动视图的背景色表示“淡入淡出为无”) 将一个简
将一个简单的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
}
这很可怕,因为您不应该在
layout