У меня есть UICollectionView
, у которого есть 3 ячейки в строке. Мне нужно установить topLeft
и bottomLeft
cornerRadius
для левого, а topRight
и bottomRight
для правого. В центре нет cornerRadius
.
Метод расширения наборов cornerRadius
func setRadius(corners: UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
layer.mask = mask
}
Я использовал этот код, чтобы узнать, какая из ячеек должна иметь cornerRadius.
let index = indexPath.row
if index == 0 || index % 3 == 0 {
cell.setRadius(corners: [.topLeft, .bottomLeft], radius: TPSetting.cornerRadius)
}
else if ( index - 2) % 3 == 0 {
cell.setRadius(corners: [.topRight, .bottomRight], radius: TPSetting.cornerRadius)
} else {
cell.layer.cornerRadius = 0
}
Впервые работает, как и ожидалось. Но когда при вызове collectionView.reloadData()
он портится, и в центр попадают также topRight
и bottomRight cornerRadius
.
Как решить эту проблему?