Я видел некоторые другие ответы на подобные вопросы, но ни одно из решений не помогло мне, даже с некоторыми изменениями.
Как следует из названия, я бы хотел, чтобы мои UICollectionViewCell
s имелизакругленные углы и тени (или тени со всех сторон, кроме верхней).На данный момент я добавил два вида к моему UICollectionViewCell
- mainView
, который отображает необходимое содержимое ячейки и имеет закругленные углы, и shadowView
, который имеет тень.Ни одно представление не является подвидом другого, они существуют вместе в одной ячейке.Они оба имеют одинаковые размеры, и mainView
явно отображается поверх shadowView
.Вот моя текущая реализация кода:
let mainView = cell.viewWithTag(1003) as! UIView
mainView.layer.cornerRadius = 10.0
mainView.layer.borderWidth = 1.0
mainView.layer.borderColor = UIColor.clear.cgColor
mainView.layer.masksToBounds = true
let shadowView = cell.viewWithTag(1002) as! UIView
shadowView.layer.shadowColor = UIColor.black.cgColor
shadowView.layer.shadowOffset = CGSize(width: 0, height: 2.0)
shadowView.layer.shadowRadius = 2.0
shadowView.layer.shadowOpacity = 0.5
shadowView.layer.masksToBounds = false
shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: mainView.layer.cornerRadius).cgPath
Вот что производит этот код: Можно подумать, что углы mainView
недостаточно округлены, и чтотень недостаточно велика.
Однако, удалив shadowView
и установив черный фон UICollectionView
, вы можете видеть, что углы mainView
на самом деле довольно округлые:
Таким образом, это означает, что проблема связана с размером тени shadowView
.Однако я попытался увеличить смещение тени и радиус тени, но ничего не сделал.Большинство изменений либо создавали очень густую тень вокруг mainView
, уменьшали округление mainView
еще больше, либо ничего не делали.
Вот изображение соответствующей иерархии представления UITableViewCell
в раскадровке: