Почему мой UICollectionViewCell не округляется с тенью? - PullRequest
0 голосов
/ 04 октября 2018

Я следовал: https://stackoverflow.com/a/25493235 и https://stackoverflow.com/a/44820559, но я не могу округлить свои клетки, не выполнив cell.layer.cornerRadius = X вместо cell.contentView.layer.cornerRadius = X

Вот мой код дляфункция, которая определяет мою ячейку в collectionView:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath as IndexPath) as! CustomCollectionCell
    cell.backgroundColor = UIColor.white
    cell.contentView.layer.cornerRadius = 2.0
    cell.contentView.layer.borderWidth = 1.0
    cell.contentView.layer.borderColor = UIColor.clear.cgColor
    cell.contentView.layer.masksToBounds = true

    cell.layer.shadowColor = UIColor.lightGray.cgColor
    cell.layer.shadowOffset = CGSize(width: 0, height: 2.0)
    cell.layer.shadowRadius = 2.0
    cell.layer.shadowOpacity = 1.0
    cell.layer.masksToBounds = false
    cell.layer.shadowPath = UIBezierPath(roundedRect: cell.bounds, cornerRadius: cell.contentView.layer.cornerRadius).cgPath
    return cell
}

До попытки округлить ячейки все, что у меня было cell.backgroundColor = UIColor.white в этой функции, таким образом, все, что у меня сейчас есть, это просто код из StackOverflowпотому что я хотел проверить это.Буду признателен за любую помощь.

Это выглядит прямо сейчас:

enter image description here

Иэто выглядит так с предложением Пратика:

enter image description here

Обновление:

Я думаю, что естьнет другого способа сделать это, кроме:

  1. Сделайте очистку cell.backgroundColor и сделайте contentView белым

или

Сделайте так, чтобы не включать цвет фона для ячейки, а просто сделайте contentView белым.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете использовать этот код:

cell.contentView.layer.shadowColor = hexStringToUIColor(hex: "#000000").cgColor
cell.contentView.layer.masksToBounds = true
cell.contentView.layer.shadowOpacity = 0.3
cell.contentView.layer.shadowOffset = CGSize.zero
cell.contentView.layer.shadowRadius = 2
cell.contentView.layer.shouldRasterize = true
cell.contentView.layer.rasterizationScale = true ? UIScreen.main.scale : 1
0 голосов
/ 04 октября 2018

Обновление В вашем случае просто наберите

    cell.layer.shadowColor = UIColor.lightGray.cgColor
    cell.layer.shadowOffset = CGSize(width: 0, height: 2.0)
    cell.layer.shadowRadius = 2.0
    cell.layer.shadowOpacity = 1.0
    cell.layer.masksToBounds = true
    cell.layer.shadowPath = UIBezierPath(roundedRect: cell.bounds, 
    cornerRadius: cell.contentView.layer.cornerRadius).cgPath

    cell.backgroundColor = UIColor.white
    cell.contentView.layer.cornerRadius = 2.0
    cell.contentView.layer.borderWidth = 1.0
    cell.contentView.layer.borderColor = UIColor.clear.cgColor
    cell.contentView.layer.masksToBounds = false
    cell.backgroundColor = //background color of your collection view or your main view.
...