Я пытаюсь создать UIImage
, который я буду использовать для установки фона для UICollectionViewCell
.Я нашел эту функцию для преобразования UIView
в UIImage
:
func imageWithView(view: UIView) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
let snapshotImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return snapshotImage
}
В функции ячейки представления моего собрания я делаю:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! VideoCell
//creating view
let colour1 = UIColor.yellow.cgColor
let colour2 = UIColor.red.cgColor
let gradientLayer = CAGradientLayer()
gradientLayer.frame = contentView.bounds
gradientLayer.colors = [colour1, colour2]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)
let gradientView = UIView(frame: contentView.bounds)
gradientView.layer.addSublayer(gradientLayer)
//converting UIView to UIImage
let ccimage = imageWithView(view: gradientView)
}
Однако я продолжаю получать эту ошибку:
Просмотр (0x7fe876e2d940, UIView) рисования с afterScreenUpdates: ДА внутри CoreAnimation commit не поддерживается
Если я сделаю afterScreenUpdates: false
, то получу эту ошибку:
[Моментальный снимок] Для отрисовки вида, который не был обработан хотя бы один раз, требуется afterScreenUpdates: ДА.
Я действительно запутался в том, как подойти к этой ошибке.Я вызываю функцию не в том месте?