您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> ios >> 正文

ios 代码控制出现控件的阴影

作者:佚名    责任编辑:admin    更新时间:2022-06-22

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