悟途网移动版

IOS

悟途网 > Apple > IOS > 正文

怎么在ios代码控制出现控件的阴影

2013-06-06 22:24 悟途网 T

只需要把对应的空间,进行重写。开发的主要针对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