2016-04-30 26 views
2

我向UICollectionView添加了漸變圖層,但圖層設置爲屏幕寬度。我試圖在滾動時保持圖層靜態,但找不到解決方案。嘗試設置collectionView的框架和當前的VC,當我滾動圖層也滾動。這是我的代碼,謝謝你的幫助。如何在滾動時設置UICollectionView圖層不移動/靜態Swift

let gradinatLayer = CAGradientLayer() 
    gradinatLayer.frame = self.collectionView.frame //self.currentViewController.view.frame 

    let cgColors:[CGColorRef] = [UIColor.blackColor().colorWithAlphaComponent(0.7).CGColor, UIColor.clearColor().CGColor, UIColor.blackColor().colorWithAlphaComponent(0.7).CGColor] 

    gradinatLayer.colors = cgColors 
    gradinatLayer.startPoint = CGPointMake(0, 0.5) 
    gradinatLayer.endPoint = CGPointMake(1.0, 0.5) 
    gradinatLayer.locations = [0.15, 0.50, 0.85] 

    self.collectionView.layer.insertSublayer(gradinatLayer, atIndex: 0) 

//This doesn't work 
self.collectionView.layer.shouldRasterize = true 
self.collectionView.layer.rasterizationScale = UIScreen.mainScreen().scale 

回答

1

感謝您對您的所有意見。挖掘到UIView後,這是我的解決方案。不幸的是,將super viewssubviews添加到UICollectionView仍然保持視圖可滾動。感謝John Stephen,他展示瞭如何使用其子視圖創建帶有userIntaractions的透明UIView,這是可能的。

我已經宣佈的collectionView頂部@IBOutlet weak var passThroughView: PassThroughView!

這是現在工作的代碼:

let gradinatLayer = CAGradientLayer() 
    gradinatLayer.frame = self.currentViewController.view.frame 

    let cgColors:[CGColorRef] = [UIColor.blackColor().colorWithAlphaComponent(0.7).CGColor, UIColor.clearColor().CGColor, UIColor.blackColor().colorWithAlphaComponent(0.7).CGColor] 

    gradinatLayer.colors = cgColors 
    gradinatLayer.startPoint = CGPointMake(0, 0.5) 
    gradinatLayer.endPoint = CGPointMake(1.0, 0.5) 
    gradinatLayer.locations = [0.15, 0.50, 0.85] 

    passThroughView.layer.insertSublayer(gradinatLayer, atIndex: 0) 
0

嘗試添加圖層到的CollectionView的backgroundview代替:

self.collectionView.backgroundView.layer.addSublayer(gradinatLayer)

+0

嗨@ JDA3,謝謝你的回答,但是這是行不通的,因爲這是一個backgroundView,這意味着它是細胞的背後並不會在單元格頂部可見,因此,我們需要向collectionView添加頂層。 –

+0

如果你想要在單元格上方的漸變,那麼你會想要添加一個新的視圖到collectionView的.superView,使它透明,並添加漸變。 – JDA3