我正在尝试创建一个圆形集合视图单元格。
在单元格中,我有一个红色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()
目标在左边,但正在发生的是在右边。
这是我的故事板
约束都是蓝色,没有红色。
为了获得每列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)
}
知道我可能做错了吗?
最后,如果我在视图中有视图,则无关紧要。我根据其他数据更改了戒指或边框颜色....所以我只需要能够轻松更改边框颜色。
答案 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 ...
这让我得到了完美的圈子