objective-c - UIButton 阴影在所有 4 个面

标签 objective-c uibutton ios8 shadow

我正在尝试为 UIButton 生成阴影。

下面是我正在使用的。

myButton.layer.shadowColor = [UIColor blackColor].CGColor;
myButton.layer.shadowOpacity = 0.5;
myButton.layer.shadowRadius = 1;
myButton.layer.shadowOffset = CGSizeMake(4, 4);
myButton.layer.masksToBounds = NO;

但它会在右侧和底部产生阴影。

有没有办法让我在所有 4 个边上都有阴影?

作为另一种解决方案,我通过在按钮后面放置带阴影的图像来实现此目的,但我不想那样做。

有没有办法以编程方式完成此操作?

类似下面的内容。

enter image description here

最佳答案

由于您将阴影偏移 {4, 4},因此阴影出现在按钮的右下角。您可以设置零偏移量:

myButton.layer.shadowOffset = CGSizeZero

并通过调整 shadowRadius 您可能会达到您想要的效果。

下面是阴影的构建方式:

(第一行)从按钮的形状开始

(第 2 行)在按钮下方绘制一个黑色形状,并将其平移到 shadowOffset 中指定的量:左侧 10px,右侧 0px。在右侧,您看不到黑色矩形,因为它就在按钮的正下方

(第 3 行)按照 blurRadius 中指定的量模糊黑色矩形。零意味着没有模糊,黑色矩形会保持清晰,所以如果你不偏移也不模糊,你将什么也看不到。

enter image description here

关于objective-c - UIButton 阴影在所有 4 个面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038559/

相关文章:

objective-c - 动画 UIButton 上的用户交互

ios - UIButton 图像在按下时变灰

ios - 实现 PushKit 并测试开发行为

ios7 - 从字典中获取任何对象

ios - UIViewCollection 在模态视图 Controller 中旋转后调整单元格大小

iOS 应用程序在下载非常大的文件时耗尽内存

iphone - 单击时如何使按钮变亮(如单击 iphone 中的 shift 键)

ios - 在 Swift 中每 30 分钟发送一次位置更新

ios - 为什么 UITableView 在同时滚动和更新时会丢失部分标题?

iphone - 如何访问 UINavigationController 中以前的 View 元素