Я добавил слой градиента в UICollectionView, но для этого слоя задана ширина экрана. Я пытаюсь сохранить статический слой во время прокрутки, но не могу найти решение. Пытался установить как фрейм collectionView, так и currentVC, когда я прокручиваю слой, также прокручивается. Это мой код, спасибо за вашу помощь.
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
2 ответа
Спасибо вам за все ваши комментарии. Это было моим решением после того, как я покопался в UIView. К сожалению, добавление super views
и subviews
в UICollectionView
по-прежнему сохраняет возможность прокрутки. Благодаря Джону Стивену, который показал, как создать прозрачный 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)
Попробуйте вместо этого добавить свой слой в backgroundview collectionView:
Self.collectionView.backgroundView.layer.addSublayer (gradinatLayer)
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.