最近遇到这个需求,以为是多难的事。
结果就两三行搞定。
#import <QuartzCore/QuartzCore.h>
//UIView or inherited from uiview.
self.layer.maksToBounds = YES;
self.layer.cornerRadius = 5.0; //根据需要调整
官方的切圆角代码:
static
void
addRoundedRectToPath(
CGContextRef context
, CGRect rect
,
float
ovalWidth,float
ovalHeight)
{
float
fw, fh;
if
(
ovalWidth ==
0
|| ovalHeight ==
0
)
{
// 1
CGContextAddRect(
context
, rect
)
;
return
;
}
CGContextSaveGState(
context
)
; // 2
CGContextTranslateCTM (
context
, CGRectGetMinX(
rect
)
, // 3
CGRectGetMinY(
rect
)
)
;
CGContextScaleCTM (
context
, ovalWidth, ovalHeight)
; // 4
fw =
CGRectGetWidth (
rect
)
/
ovalWidth; // 5
fh =
CGRectGetHeight (
rect
)
/
ovalHeight; // 6
CGContextMoveToPoint(
context
, fw, fh/
2
)
; // 7
CGContextAddArcToPoint(
context
, fw, fh, fw/
2
, fh, 1
)
; // 8
CGContextAddArcToPoint(
context
, 0
, fh, 0
, fh/
2
, 1
)
; // 9
CGContextAddArcToPoint(
context
, 0
, 0
, fw/
2
, 0
, 1
)
; // 10
CGContextAddArcToPoint(
context
, fw, 0
, fw, fh/
2
, 1
)
; // 11
CGContextClosePath(
context
)
; // 12
CGContextRestoreGState(
context
)
; // 13
}