使UIView的特定角落成圆形

时间:2012-12-28 10:10:09

标签: iphone ios uiview

我做了一些研究,我知道,没有简单的方法 只使 UIView回合的右上角和左上角,对吧?

PS。这段代码使得所有4个角都是圆形的。我不想要。

  #import <QuartzCore/QuartzCore.h>

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

2 个答案:

答案 0 :(得分: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单元格时使用这样的东西,我发现使用背景图像总是更好的选择,因为这种绘图材料总会影响性能

答案 1 :(得分:0)

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

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

1)一行代码(Swift 2.0) - 它会伤害视图的所有四个角落:

YourView.layer.cornerRadius = 10

2)并在故事板中添加一个视图,添加1个带有常规角的视图,您不需要圆角并根据需要调整约束: 请注意,小的常规角视图应位于主视图的后面。 ion-datetime-picker

This is how it looks in storyboard