只需要把對應的空間,進行重寫。我開發的主要針對UIButton這個控件
.h文件,如下:
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@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