具有粗边框的UICollectionView单元格

时间:2017-06-01 06:26:29

标签: swift

我正在尝试创建一个圆形集合视图单元格。

在单元格中,我有一个红色UIView,从顶部,前导,尾随和底部为0。在那个单元格的内部,我有另一个白色的视图,从顶部,前导,尾随和底部是4。在该视图中是UILabel和UIImageView。

目标是每列有2个单元格,并且在白色圆圈和文本以及图像周围有一个红色环。

要创建圆形UIViews,我有像这样的UIView的扩展

extension UIView {
  func createRoundView() {
    layer.cornerRadius = frame.size.width/2
    clipsToBounds = true
  }
}

在我的 cellForItemAt 里面我说

cell.whiteBackgroundView.createRoundView()
cell.colorStatusView.createRoundView()

目标在左边,但正在发生的是在右边。

enter image description here

这是我的故事板

enter image description here

约束都是蓝色,没有红色。

为了获得每列2个单元格,我使用此委托方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let padding: CGFloat = 25
    let collectionCellSize = collectionView.frame.size.width - padding
    return CGSize(width: collectionCellSize/2, height: collectionCellSize/2)
}

知道我可能做错了吗?

最后,如果我在视图中有视图,则无关紧要。我根据其他数据更改了戒指或边框颜色....所以我只需要能够轻松更改边框颜色。

2 个答案:

答案 0 :(得分:2)

这段代码还不够,告诉那里发生了什么......试着设置所有

backgroundColors to .clear

然后将这些属性设置为您的视图

customView.layer.cornerRadius = half of your width
customView.layer.borderWidth = 5
customView.layer.borderColor = UIColor.red.cgColor

答案 1 :(得分:0)

使用@blinkmeoff答案我主要想出来(虽然是后续问题)

在单元格类中,我添加了以下内容

self.backgroundViewContainer.layoutIfNeeded()       
self.backgroundViewContainer.layer.cornerRadius = min(backgroundViewContainer.frame.size.width, backgroundViewContainer.frame.size.height)/2
self.backgroundViewContainer.clipsToBounds = true

我只是通过执行/ 2来保持奇怪的形状所以我添加了min(ba ...

这让我得到了完美的圈子