user1903992 user1903992 - 11 months ago 54
iOS Question

Make specific corners of UIView round

I did a bit of research, and I see, there is no easy way to
make only top right and top left corners of the UIView round, right?

ps. This code makes all 4 corners round which is smth. I don't want.

#import <QuartzCore/QuartzCore.h>

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

amb amb
Answer Source

You can do it with this snippet:

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


Sorry, I forgot this

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

PS: as I said in the comment, if you use things like this when displaying UITableViewCell cells, I've found that it's always a better choice to use background images because this kind of drawing stuff always affects performance.