2017-06-01 82 views
0

我正在尝试创建一个圆形的集合视图单元格。带厚边框的UICollectionView单元格

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

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

要创建圆UIViews我有这样

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

里面我cellForItemAt对UIView的扩展我说

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

此代码是不够的,告诉这是怎么回事那里...尝试设置所有

backgroundColors to .clear 

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

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

使用@blinkmeoff回答我想通它大部分(虽然后续问题来了)

在细胞类里面我加了以下内容

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

我一直由刚做/ 2,所以我说最小(BA越来越怪异的形状......

和这让我完美的圆形