2016-04-30 9 views
2

Я добавил слой градиента в UICollectionView, но слой установлен на ширину экрана. Я пытаюсь сохранить статический слой во время прокрутки, но не могу найти решение. Пробовал настройку как для рамки collectionView, так и для currentVC, когда я прокручиваю слой, также прокручивается. Это мой код до сих пор, спасибо за вашу помощь.Как установить слой 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 views и subviews в UICollectionView по-прежнему сохраняет прокручиваемое представление. Благодаря John Stephen, который показал, как создать прозрачный UIView с userIntaractions с его дочерними представлениями, это было возможно.

Я объявил @IBOutlet weak var passThroughView: PassThroughView! сверху collectionView.

Это код, который работает сейчас:

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

Попробуйте добавить свой слой backgroundview в CollectionView вместо:

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

+0

Привет @ JDA3, спасибо за ваш ответ, но это не будет работать, как это backgroundView, что означает, что это за клетки и не будет видимый поверх ячеек, поэтому нам нужно добавить верхний слой в collectionView. –

+0

Если вы хотите использовать градиент над ячейками, вам нужно добавить новое представление в .superView коллекции, сделать его прозрачным и добавить к нему градиент. – JDA3

 Смежные вопросы

  • Нет связанных вопросов^_^