2

NSScrollViewの上端と下端を透明にフェードさせる方法はありますか?サブビューに特定の色のグラデーションを追加することで「フェード」するコード/回答をいくつか見てきました。基本的には、上下を背景色で覆っています。ただし、実際にはalpha = 0にフェードさせて、スクロールビューの背後にあるビューの内容を実際に確認できるようにしたいと思います。このNSScrollViewの背後にさまざまな背景を持たせるようにアプリを計画していますが、境界線にトランジションがない場合はかなり安価に見えます。

4

2 に答える 2

2

ここから単純なiOS実装を、macOSSwiftで動作するように変換しました。

これを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

フェードカラーを構成できます(通常、シャドウの場合はグレー/ブラック、「フェードトゥナッシング」の場合はスクロールビューの背景色)。

于 2012-11-15T11:06:58.420 に答える