Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 淡出视图的顶部和底部_Objective C_Xcode_Macos_Cocoa_Nsscrollview - Fatal编程技术网

Objective c 淡出视图的顶部和底部

Objective c 淡出视图的顶部和底部,objective-c,xcode,macos,cocoa,nsscrollview,Objective C,Xcode,Macos,Cocoa,Nsscrollview,有没有办法使NSScrollView的上边缘和下边缘淡入透明状态?我见过一些代码/答案,它们通过在子视图中添加某种颜色的渐变来“淡出”,基本上,用背景色覆盖顶部和底部。但是,我希望它实际淡入alpha=0,这样您就可以实际看到滚动视图后面的视图内容。我正在计划我的应用程序在这个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