我有圆角矩形UIButton,并希望添加阴影,但当我设置背景图像阴影不可见时,我认为背景覆盖阴影。没有背景图像阴影可见
customBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
customBtn.frame=CGRectMake(customBtn.frame.origin.x, customBtn.frame.origin.y, 30, 30);
[customBtn setImage:[UIImage imageNamed:@"icon.png"] forState:UIControlStateNormal];
[customBtn setBackgroundImage:[[UIImage imageNamed:@"bg.png"] stretchableImageWithLeftCapWidth:0 topCapHeight:0] forState:UIControlStateNormal];
customBtn.layer.cornerRadius=9;
customBtn.layer.shadowColor = [UIColor redColor].CGColor;
customBtn.layer.shadowOpacity = 1.0;
customBtn.layer.shadowRadius = 1;
customBtn.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
customBtn.clipsToBounds=YES;
答案 0 :(得分:1)
由于UIButton
的内部结构,您最好的办法是创建一个包含阴影的可伸缩背景图像。
UIImage *bgWithShadow = [[UIImage imageNamed: @"bg.png"]
stretchableImageWithLeftCapWidth: 10
topCapHeight: 0];
[customBtn setBackgroundImage: bgWithShadow
forState: UIControlStateNormal];
此示例假定bg.png
是一个21像素宽的图像,其中包含阴影。基本上,您不必执行任何其他操作,例如访问按钮的图层或更改其clipsToBounds
属性。请参阅this question以了解可伸缩图像的内容(带图片!)。
请注意,stretchableImageWithLeftCapWidth:topCapHeight:
已被弃用,转而使用resizableImageWithCapInsets:
。