IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落

Posted

技术标签:

【中文标题】IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落【英文标题】:IOS: round the cournes of a uicollectionViewCell clipin it's contents 【发布时间】:2014-09-09 18:54:00 【问题描述】:

我有一个包含多种单元格样式和大小的集合视图,我想使用这个辅助函数来圆角单元格的角:

void roundCornersOfAView(UIView *view, CGFloat radius, BOOL shadow)
    CALayer* layer = [view layer];
    [layer setCornerRadius:radius];
    [layer setBorderColor:[UIColor blackColor].CGColor];

    [layer setMasksToBounds:YES];
//    CALayer* mask = [CALayer layer];
//    [mask setFrame:CGRectMake(layer.frame.origin.x, layer.frame.origin.y, layer.frame.size.width, layer.frame.size.height)];
//    [mask setCornerRadius:radius];
//    [layer setMask:mask];
    if (shadow) 
        [layer setBorderWidth:0.5f];
        //[layer setMasksToBounds:NO];
        [layer setShadowColor:[UIColor blackColor].CGColor];
        [layer setShadowOpacity:1.0];
        [layer setShadowRadius:1.0];
        [layer setShadowOffset:CGSizeMake(0.0, 0.0)];
    
    [layer setMasksToBounds:YES];

在我的单元格中使用它作为索引路径的行:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:... forIndexPath:indexPath];

roundCornersOfAView([cell contentView], 30, YES);

问题是单元格上的图像没有被剪裁在圆角中,标签或任何其他子视图都没有,它只剪裁背景颜色......像 instagram 一样圆角和剪裁其内容的最佳方法是什么应用?

【问题讨论】:

尝试设置clipToBounds = YES; 已经尝试过...似乎剪辑到边界仍然是边界属性的一部分,它是一个平方 CGrect...因为这只是编辑图层,所以 clipToBounds 不起作用 尝试将单元格颜色设置为Clear color,可能你看到的是单元格而不是contentView。让我知道进展如何 还是不行... 您是否尝试过传递单元格而不是 [cell contentView]? 【参考方案1】:

这样称呼它:

roundCornersOfAView(cell, 30, YES);

像这样使用辅助函数:

void roundCornersOfAView(UIView *view, CGFloat radius, BOOL shadow)
    CALayer* layer = [view layer];
    [layer setCornerRadius:radius];
    [layer setBorderWidth:0.0f];
    if (shadow) 
            [layer setBorderColor:[UIColor blackColor].CGColor];
            [layer setBorderWidth:0.1f];
            [layer setShadowColor:[UIColor blackColor].CGColor];
            [layer setShadowOpacity:0.5];
            [layer setShadowRadius:1.5];
            [layer setShadowOffset:CGSizeMake(0.0, 1.0)];
        
        [layer setMasksToBounds:YES];
    

问题是我发送的是内容视图而不是单元格本身。

【讨论】:

这应该是一个类别,虽然 是的,一个类别会更好,这个解决方案虽然会剪辑阴影:S

以上是关于IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落的主要内容,如果未能解决你的问题,请参考以下文章

ios:图层显示在其托管视图之外

共享文本文档,用户可以在其中实时键入 Swift IOS

如何在 iOS 中动态更改 UICollectionView 单元格高度

iOS 使用多个 CollectionView 重用同一个单元格

ios:在其超级视图中的中心视图

如何在 uiimage iOS 中围绕眼睛和嘴巴绘制正方形或圆形