幸运的是,今天(2020年)现在非常容易
这些天来很容易做到这一点:
这就是全部
import UIKitclass GlowBox: UIView { override func layoutSubviews() { super.layoutSubviews() backgroundColor = .clear layer.shadowOpacity = 1 layer.shadowColor = UIColor.red.cgColor layer.shadowOffset = CGSize(width: 0, height: 0) layer.shadowRadius = 3 let p = UIBezierPath( roundedRect: bounds.insetBy(dx: 0, dy: 0), cornerRadius: 4) let hole = UIBezierPath( roundedRect: bounds.insetBy(dx: 2, dy: 2), cornerRadius: 3) .reversing() p.append(hole) layer.shadowPath = p.cgPath }}一个非常方便的提示:
当您添加(即
.append)两个类似的贝塞尔曲线路径时…
第二个必须是“正常”或“反转”。
请注意结尾处的代码行:
.reversing()
像大多数程序员一样,如果在不同情况下应该是“正常”或“逆向” , 我将永远无法记住 !
简单的解决方案…
很简单,两者都尝试!
只需在有或没有的情况下尝试
.reversing()
它将以一种或另一种方式工作!:)



