demo :http://code4app.com/ios/APRoundedButton/53bb90ba933bf020688b4d1e
UIEdgeInsets insets = UIEdgeInsetsMake(0, 8, 0, 8);
UIImage *tempImage = [UIImageimageNamed:@"button_logout_bg"];
tempImage = [tempImage resizableImageWithCapInsets:insets];
[button setBackgroundImage:tempImage forState:UIControlStateNormal];
用法:myBtn = [[APRoundedButtonalloc]initWithFrame:CGRectMake(100, 100, 100, 60)];
myBtn.style = 4;
[myBtnsetBackgroundColor:[UIColorredColor]];
[self.view addSubview:myBtn];
[myBtnawakeFromNib];
然后再导入下面的一个文件就行了。。。。。。。设置具体的弧度大小可以进里面改。。。。
ornerRadii:CGSizeMake(10.0, 10.0)];/k控制弧度的大小。。。
#import <UIKit/UIKit.h>
@interface APRoundedButton : UIButton
@property (nonatomic, assign) int style;
@end
#import "APRoundedButton.h"
#import <QuartzCore/QuartzCore.h>
@implementation APRoundedButton
- (void)awakeFromNib
{
[superawakeFromNib];
UIRectCorner corners;
switch ( self.style )
{
case 0:
corners = UIRectCornerBottomLeft;
break;
case 1:
corners = UIRectCornerBottomRight;
break;
case 2:
corners = UIRectCornerTopLeft;
break;
case 3:
corners = UIRectCornerTopRight;
break;
case 4:
corners = UIRectCornerBottomLeft | UIRectCornerBottomRight;
break;
case 5:
corners = UIRectCornerTopLeft | UIRectCornerTopRight;
break;
case 6:
corners = UIRectCornerBottomLeft | UIRectCornerTopLeft;
break;
case 7:
corners = UIRectCornerBottomRight | UIRectCornerTopRight;
break;
case 8:
corners = UIRectCornerBottomRight | UIRectCornerTopRight | UIRectCornerTopLeft;
break;
case 9:
corners = UIRectCornerBottomRight | UIRectCornerTopRight | UIRectCornerBottomLeft;
break;
default:
corners = UIRectCornerAllCorners;
break;
}
UIBezierPath *maskPath = [UIBezierPathbezierPathWithRoundedRect:self.bounds
byRoundingCorners:corners
cornerRadii:CGSizeMake(10.0, 10.0)];
CAShapeLayer *maskLayer = [CAShapeLayerlayer];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;
self.layer.mask = maskLayer;
}
@end