【问题标题】:Fade out top and bottom of an NSScrollView淡出 NSScrollView 的顶部和底部
【发布时间】:2012-05-07 20:48:29
【问题描述】:

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

【问题讨论】:

    标签: objective-c xcode macos cocoa nsscrollview


    【解决方案1】:

    将一个简单的 iOS 实现从 here 转换为与 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 中重新创建 CALayers
    【解决方案2】:

    这是一个现成的底部和顶部渐变:

    https://github.com/jnozzi/JLNFadingScrollView

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2023-03-05
      • 2016-03-11
      • 2015-05-25
      • 1970-01-01
      相关资源
      最近更新 更多