UICollectionview 上的圆角而不是单个单元格
Rounding corners on UICollectionview and not individual cells
我想在我的 UICollectionView
上设置 2 个圆顶角
我有一个 UIView
contentView,其中包含我的 UICollectionView
。如果我设置我的 UICollectionView
的 cornerRadius 并将 clipsToBound 设置为 true,除了它圆化 所有 4 个角 。
所以我似乎需要应用一个 UIBezierPath
但是一旦我这样做我就遇到了问题:
- 如果我将
UIBezierPath
应用到 UICollectionView
本身,我只能看到我的第一个单元格,当我滚动到第二个单元格时,我什么也看不到。
[
[UIBezierPath bezierPathWithRoundedRect:self.collectionView.bounds
byRoundingCorners:UIRectCornerTopLeft cornerRadii:CGSizeMake(9.0,
9.0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.collectionView.bounds;
maskLayer.path = maskPath.CGPath;
self.collectionView.layer.mask = maskLayer;
- 如果我尝试将
UIBezierPath
应用于 contentView,与上面相同,但我替换了 self.collectionView 和 self.contentView, 边角一点都不圆.
如何将你的collectionView所在的视图四舍五入?
像这样:
let viewFrame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
let corners: UIRectCorner = .topLeft
let path = UIBezierPath(
roundedRect: viewFrame,
byRoundingCorners: corners,
cornerRadii: CGSize(width: 50, height: 50))
let maskLayer = CAShapeLayer()
maskLayer.frame = viewFrame
maskLayer.path = path.cgPath
view.layer.mask = maskLayer
只要父视图 不是我的 first/top 视图 ,在 UICollectionView
父容器上设置 UIBezierPath
就有效。我不得不在顶部添加另一个 UIView
roundContainerView UIView
.
UIView ( Top view. contentView )
|- UIView ( roundContainerView ) apply UIBezierPath here
|- UICollectionView ( collectionView )
我想在我的 UICollectionView
我有一个 UIView
contentView,其中包含我的 UICollectionView
。如果我设置我的 UICollectionView
的 cornerRadius 并将 clipsToBound 设置为 true,除了它圆化 所有 4 个角 。
所以我似乎需要应用一个 UIBezierPath
但是一旦我这样做我就遇到了问题:
- 如果我将
UIBezierPath
应用到UICollectionView
本身,我只能看到我的第一个单元格,当我滚动到第二个单元格时,我什么也看不到。
[
[UIBezierPath bezierPathWithRoundedRect:self.collectionView.bounds
byRoundingCorners:UIRectCornerTopLeft cornerRadii:CGSizeMake(9.0,
9.0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.collectionView.bounds;
maskLayer.path = maskPath.CGPath;
self.collectionView.layer.mask = maskLayer;
- 如果我尝试将
UIBezierPath
应用于 contentView,与上面相同,但我替换了 self.collectionView 和 self.contentView, 边角一点都不圆.
如何将你的collectionView所在的视图四舍五入?
像这样:
let viewFrame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
let corners: UIRectCorner = .topLeft
let path = UIBezierPath(
roundedRect: viewFrame,
byRoundingCorners: corners,
cornerRadii: CGSize(width: 50, height: 50))
let maskLayer = CAShapeLayer()
maskLayer.frame = viewFrame
maskLayer.path = path.cgPath
view.layer.mask = maskLayer
只要父视图 不是我的 first/top 视图 ,在 UICollectionView
父容器上设置 UIBezierPath
就有效。我不得不在顶部添加另一个 UIView
roundContainerView UIView
.
UIView ( Top view. contentView )
|- UIView ( roundContainerView ) apply UIBezierPath here
|- UICollectionView ( collectionView )