IOS:绕过一个uicollectionViewCell剪辑的内容

时间:2014-09-09 18:54:01

标签: ios uiview uicollectionview calayer

我有一个具有多个单元格样式和大小的集合视图我想使用此辅助函数围绕单元格的角落:

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一样应用?

1 个答案:

答案 0 :(得分: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];
    }

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