【问题标题】:UIButton shadow on all 4 sides所有 4 个侧面的 UIButton 阴影
【发布时间】:2014-11-20 11:33:09
【问题描述】:

我正在尝试为 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 个侧面都有阴影?

作为另一种解决方案,我通过将带有阴影的图像放在按钮后面来做到这一点,但我不想那样做。

有没有办法以编程方式完成这项工作?

如下所示。

【问题讨论】:

    标签: objective-c uibutton ios8 shadow


    【解决方案1】:

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

    myButton.layer.shadowOffset = CGSizeZero
    

    通过调整shadowRadius,您可能会实现您想要的。

    以下是阴影的构建方式:

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

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

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

    【讨论】:

    • 我相信 CGSizeZero 等价于 CGSizeMake(0,0),也就是说不会有任何影子……对吧?
    • 不,这意味着阴影不会被偏移,它会在按钮上居中。如果您提供大于零的半径,则阴影将在按钮的所有侧面均匀流血。
    • 还没来..我有 layer.shadowRadius = 0; & layer.shadowOffset = CGSizeZero;
    • 提供半径 8 而不是 0。如果您不模糊(半径 = 0)并且不偏移阴影,您将看不到任何东西。我会更新我的答案,向你展示它是如何工作的。
    • self.ResetNo.layer.shadowRadius = 8.0;像这样设置半径,但它看起来不像你上一张图片。请回答&谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2021-02-09
    • 2018-02-07
    • 1970-01-01
    • 2013-03-20
    • 2015-01-20
    • 1970-01-01
    相关资源
    最近更新 更多