UIView category for rounding just the corners which you want, not all like CALayer cornerRadius.
Often times, you just want to round left corners or bottom corners, not all of them. CALayer has an attribute called cornerRadius, but that rounds all the corners. What if you want to round just the corners you want? This category helps you do that.
UIView+RoudedCorners.h
================
#import <UIKit/UIKit.h>
@interface UIView (RoundedCorners)
-(void)setRoundedCorners:(UIRectCorner)corners radius:(CGFloat)radius;
@end
UIView+RoundedCorners.m
================
#import "UIView+RoundedCorners.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIView (RoundedCorners)
-(void)setRoundedCorners:(UIRectCorner)corners radius:(CGFloat)radius {
CGRect rect = self.bounds;
// Create the path
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corners cornerRadii:CGSizeMake(radius, radius)];
// Create the shape layer and set its path
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = rect;
maskLayer.path = maskPath.CGPath;
// Set the newly created shape layer as the mask for the view's layer
self.layer.mask = maskLayer;
}
@end
Usage
================
Import the category first:
#import UIView+RoundedCorners.h
Use the following to round all corners:
[myView setRoundedCorners:UIRectCornerAllCorners radius:10.0];
For Top Left and Top Right:
[myView setRoundedCorners:UIRectCornerTopLeft|UIRectCornerTopRight radius:10.0];
Here I have used the inbuilt enum UIRectCorner
for specifying the rounded corners. So its much simpler to implement.
Written by Vashishtha Jogi
Related protips
2 Responses
honestly I never needed, but it's brilliant nonetheless.
over 1 year ago
·
Works like a charm, thanks.
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Uiview
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#