只需要把对应的空间,进行重写。我开发的主要针对uibutton这个控件
.h文件,如下:
#import
#import
@interface shadowbutton : uibutton
{
uicolor *shadowcolor;
}
@property(nonatomic , strong)uicolor *shadowcolor;
@end
.m文件,如下
#import shadowbutton.h
@implementation shadowbutton
@synthesize shadowcolor;
-(void)setproperty
{
self.imageedgeinsets = uiedgeinsetsmake(0, -1, 3, 2);
self.shadowcolor = [uicolor graycolor];
}
- (id)initwithframe:(cgrect)frame
{
self = [super initwithframe:frame];
if (self) {
// initialization code
}
return self;
}
-(id)initwithcoder:(nscoder *)adecoder
{
self = [super initwithcoder:adecoder];
if (self) {
[self setproperty];
}
return self;
}
// only override drawrect: if you perform custom drawing.
// an empty implementation adversely affects performance during animation.
- (void)drawrect:(cgrect)rect
{
// drawing code
cgcontextref context = uigraphicsgetcurrentcontext();
cgrect frame = rect;
uiedgeinsets insets = self.imageedgeinsets;
frame.origin.x +=insets.left;
frame.origin.y +=insets.top;
frame.size.width -= (insets.left + insets.right);
frame.size.height -= (insets.top + insets.bottom);
if (shadowcolor) {
cgcontextsetshadowwithcolor(context, cgsizemake(insets.right, insets.bottom), 10, [shadowcolor cgcolor]);
}
uiimage *image = self.imageview.image;
[image drawinrect:frame];
}
@end
更多信息请查看IT技术专栏