将阴影添加到选定的边缘UIView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将阴影添加到选定的边缘UIView相关的知识,希望对你有一定的参考价值。

我需要创建带阴影的UIView,但我只需要在右边,左边,底边的阴影 - >顶边没有阴影。有可能这样做吗?我尝试了不同的偏移,但我没有实现我的目标。

答案

像这样的东西?

let yourView = UIView()
yourView.frame = CGRect(x: 50, y: 50, width: 100, height: 100)
yourView.backgroundColor = UIColor.blue // NEEDS A COLOR TO SHOW SHADOW
yourView.layer.shadowColor = UIColor.black.cgColor
yourView.layer.shadowOpacity = 1
yourView.layer.shadowOffset = CGSize.zero
yourView.layer.shadowRadius = 10
self.view.addSubview(yourView)
另一答案

在我个人看来,克服后一个问题的最好方法是创建一个UIView的@IBDesignable扩展并声明@IBInspectable属性,如下所述

public extension UIView {

    // MARK: - Inspectables

    /**
     Defines the color of the shadow behind the view (defaults to nil).
     */

    @IBInspectable public var shadowColor: UIColor? {
        set {
            if let color = newValue {
                self.layer.shadowColor = color.cgColor
            } else {
                self.layer.shadowColor = nil
            }
        } get {
            if let color = layer.shadowColor {
                return UIColor(cgColor: color)
            }
            return nil
        }
    }

    /**
     Defines the radius of the shadow behind the view.
     */

    @IBInspectable public var shadowRadius: CGFloat {
        set(newValue) {
            self.layer.shadowRadius = newValue
        } get {
            return self.layer.shadowRadius
        }
    }

    /**
     Defines the opacity of the shadow behind the view.
     */

    @IBInspectable public var shadowOpacity: Float {
        set(newValue) {
            self.layer.shadowOpacity = newValue
        } get {
            return self.layer.shadowOpacity
        }
    }

    /**
     Defines the offset of the shadow behind the view.
     */

    @IBInspectable public var shadowOffset: CGSize {
        set(newValue) {
            self.layer.shadowOffset = newValue
        } get {
            return self.layer.shadowOffset
        }
    }

}

之后,您将能够在故事板中为每个UIView(或继承自UIView的类)找到后面的参数。

但是,如果您以编程方式工作,则必须尝试使用​​shadowOffset属性,直到获得所需的视觉效果。

以上是关于将阴影添加到选定的边缘UIView的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIBezierPath 为带有阴影的选定边缘添加角半径 | iOS |斯威夫特 4.2

带有切出段和阴影的 UIView

UIView有圆角和投影?

css有用的代码片段

查找 UIImage 的左边缘颜色

给 UIView 添加阴影