7

我做了一些研究,我明白了,没有简单的方法可以使 UIView 的右上角和左上角为圆形,对吧?

附言。此代码使所有 4 个角都变圆,这是 smth。我不想要。

  #import <QuartzCore/QuartzCore.h>

 self.layer.cornerRadius = 5;
 self.layer.masksToBounds = YES;
4

2 回答 2

21

你可以用这个片段来做到这一点:

// Set top right & left corners
[self setMaskTo:yourView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight];

编辑

对不起,我忘了这个

- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
{
    UIBezierPath *rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds
                                                  byRoundingCorners:corners
                                                        cornerRadii:CGSizeMake(8.0, 8.0)];
    CAShapeLayer *shape = [[CAShapeLayer alloc] init];
    [shape setPath:rounded.CGPath];    
    view.layer.mask = shape;
}

PS:正如我在评论中所说,如果您在显示UITableViewCell单元格时使用这样的东西,我发现使用背景图像总是更好的选择,因为这种绘图东西总是会影响性能。

于 2012-12-28T10:12:00.623 回答
0

我尝试了一次 UIView 的扩展,但它对我不起作用,因为它在绘制单元格时引起了问题

我现在通过两个步骤得到了一个更好更简单的解决方案,效果非常好:)

1) 一行代码 (Swift 2.0) - 它环绕视图的所有 4 个角:

YourView.layer.cornerRadius = 10

2)在情节提要中添加一个添加 1 个带有常规角的视图,您不需要圆角并根据需要调整约束:请注意,小的常规角视图应位于主视图后面。这就是它在故事板中的样子

在这里您可以看到小视图所需的约束

于 2016-09-09T06:11:10.993 回答