仅 UIButton 文本上的阴影(非背景)

ric*_*350 4 cocoa-touch objective-c shadow uibutton ios

我有一组UIButton带有背景颜色的 s 。当用户点击一个按钮时,我希望按钮的文本周围有阴影(以表明它已被选择)。但是,当我添加阴影时,阴影出现在整个按钮(背景和所有)上,而不仅仅是文本上。除了在UILabel空白按钮上添加一个按钮之外,是否有更简单的解决方法?

UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
...
[button setBackgroundColor:[UIColor blueColor]];

[button.layer setShadowRadius:8.0];
[button.layer setShadowColor:[[UIColor orangeColor] CGColor]];
[button.layer setShadowOpacity:0];
...
Run Code Online (Sandbox Code Playgroud)

小智 5

以下是使用 Objective-C 中可用的阴影半径属性向按钮标题添加阴影的简单方法:

#import <QuartzCore/QuartzCore.h>    

button.titleLabel.layer.shadowOffset = CGSizeMake(2.0, 2.0);
button.titleLabel.layer.shadowColor = [UIColor colorWithWhite:0.1 alpha:0.7].CGColor;
button.titleLabel.layer.shadowRadius = 2.0;
button.titleLabel.layer.shadowOpacity = 1.0;
button.titleLabel.layer.masksToBounds = NO;
Run Code Online (Sandbox Code Playgroud)

斯威夫特..

假设你重写了UIButton类..

    titleLabel!.layer.shadowColor = UIColor.black.cgColor
    titleLabel!.layer.shadowOffset = CGSize(width: -0.5, height: 0.5)
    titleLabel!.layer.shadowOpacity = 1.0
    titleLabel!.layer.shadowRadius = 0
    titleLabel!.layer.masksToBounds = false
Run Code Online (Sandbox Code Playgroud)