其他分享
首页 > 其他分享> > FreeShadow - 绘制不规则阴影

FreeShadow - 绘制不规则阴影

作者:互联网

    var shadow: NSShadow{ get set }
    var shadowPath: UIBezierPath { get set }
    var intrinsicSize: CGSize { get set }

首先,你需要在自己的 UIView 中实现这些属性:

@IBDesignable
class BundleShadowView: UIView, ShadowView { 
    lazy var shadow: NSShadow = { // 1
        let shadow = NSShadow()
        shadow.shadowColor = UIColor.lightGray
        shadow.shadowOffset = CGSize(width: 0, height: 0)
        shadow.shadowBlurRadius = 15
        return shadow
    }()
    lazy var shadowPath: UIBezierPath = { // 2
        let bezierPath = UIBezierPath()
        bezierPath.move(to: CGPoint(x: 146, y: 117.98))
        ... ...
        bezierPath.close()
        return bezierPath
    }()
    var intrinsicSize: CGSize = CGSize(width: 278, height: 401) // 3
    override func draw(_ rect: CGRect) {
        drawShadow(rect)
    }

然后打开 storyboard。在你的 storyboard 中,拖入一个 UIImage 到 view controller,设置好布局约束。示例程序中使用的是一张瓶子和盒子的图片。我们用它来演示 FreeShadow 的使用。

然后拖入一个 UIView。修改 class 为 BundleShadowView。稍微等上几秒钟,Storyboard 会重绘画不,阴影将被显示:

将 BundleShadowView 拖动到 UIImage 的下方,以便使两者更加贴合,然后适当添加一些约束:

最后,别忘了在 viewDidLoad() 方法中加上这句:

view.insertSubview(bottleBottomShadowView, at: 0)

这使得阴影的位置置于图片之下。

Build & Run , Bingo!

标签:阴影,FreeShadow,不规则,var,shadow,绘制,UIBezierPath
来源: https://blog.csdn.net/kmyhy/article/details/120783657