【问题标题】:IOS: round the cournes of a uicollectionViewCell clipin it's contentsIOS:在其内容中围绕 uicollectionViewCell 剪辑的角落
【发布时间】: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]?

标签: ios uiview uicollectionview calayer


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 2021-02-02
  • 2019-06-07
  • 2019-05-14
  • 1970-01-01
  • 2017-10-05
  • 2013-04-26
相关资源
最近更新 更多