【问题标题】:UIImage - decide which corners that should be roundedUIImage - 决定哪些角应该是圆的
【发布时间】:2011-12-25 04:13:01
【问题描述】:

我知道这是一个常见的问题,但我还没有看到任何解决方案,因此这个线程。

我们都创建了一个分组的 UITableView 并尝试将 cell.imageView 设置为图像。但是发生了什么?第一个和最后一个单元格变得丑陋,因为它们是矩形的。

我们要做的是只对第一行图像的左上角和最后一行图像的左下角进行四舍五入。

这样的方法:

cell.imageView.image = [image setCornerRadiusLeftTop: 10.0 rightTop: 0 leftBottom: 0 rightBottom: 0];`

有没有人做过类似的事情?

【问题讨论】:

  • 我想你会在这个问题的回复中找到你正在寻找的方法:Just two rounded Corners?。我使用它取得了很好的效果。你可以感谢kevboh。
  • 解决了。谢谢salo.dm
  • 很高兴你解决了。这是您发布的一个不错的小方法。

标签: iphone ios ios4 uiimageview


【解决方案1】:

一种解决方案是使用layer mask

cell.imageView.layer.mask = layerMask;

您需要两个掩码:一个用于顶部单元格,一个用于底部单元格。您可以使用CAShapeLayer 来创建这样的掩码。

【讨论】:

    【解决方案2】:

    解决方案:

    + (CAShapeLayer *) roundedCornerOnImage: (UIImageView *)imageView onCorner: (UIRectCorner)rectCorner
    {
        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds 
                                                       byRoundingCorners:rectCorner
                                                             cornerRadii:CGSizeMake(10.0, 10.0)];
    
        CAShapeLayer *maskLayer = [CAShapeLayer layer];
        maskLayer.frame = imageView.bounds;
        maskLayer.path = maskPath.CGPath;
    
        return maskLayer;
    }
    

    UITableViewCell 中图像视图的使用示例:

    if (indexPath.row == 0)
        cell.imageView.layer.mask = [Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerTopLeft];
    else if (indexPath.row == self.arrayPeople.count - 1)
        cell.imageView.layer.mask = [Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerBottomLeft];
    

    【讨论】:

      猜你喜欢
      • 2010-09-20
      • 2010-09-17
      • 2022-01-12
      • 2012-02-14
      • 1970-01-01
      • 2017-02-09
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多