gpt4 book ai didi

ios - 如何控制阴影扩散和模糊?

转载 作者:IT王子 更新时间:2023-10-29 04:56:39 26 4
gpt4 key购买 nike

我在 sketch 中设计了 UI 元素,其中一个有一个 blur 1 和 spread 0 的阴影。我查看了 View 图层属性的文档,图层没有任何名为 spread 或 blur 的东西,或任何等效的东西(唯一的控制只是 shadowOpacity)。如何控制模糊和扩散之类的东西?

这是我在 Sketch 中的设置:

Sketch shadow settings

这是我希望我的影子看起来像的样子:

Shadow wanted

这是它现在的样子:

Current shadow

请注意,您必须单击图片才能真正看到阴影。

我的代码如下:

func setupLayer(){
view.layer.cornerRadius = 2
view.layer.shadowColor = Colors.Shadow.CGColor
view.layer.shadowOffset = CGSize(width: 0, height: 1)
view.layer.shadowOpacity = 0.9
view.layer.shadowRadius = 5
}

最佳答案

以下是如何以近乎完美的精度将所有 6 个 Sketch 阴影属性应用到 UIView 的图层:

extension CALayer {
func applySketchShadow(
color: UIColor = .black,
alpha: Float = 0.5,
x: CGFloat = 0,
y: CGFloat = 2,
blur: CGFloat = 4,
spread: CGFloat = 0)
{
masksToBounds = false
shadowColor = color.cgColor
shadowOpacity = alpha
shadowOffset = CGSize(width: x, height: y)
shadowRadius = blur / 2.0
if spread == 0 {
shadowPath = nil
} else {
let dx = -spread
let rect = bounds.insetBy(dx: dx, dy: dx)
shadowPath = UIBezierPath(rect: rect).cgPath
}
}
}

假设我们要表示以下内容:

enter image description here

您可以通过以下方式轻松做到这一点:

myView.layer.applySketchShadow(
color: .black,
alpha: 0.5,
x: 0,
y: 0,
blur: 4,
spread: 0)

或更简洁:

myView.layer.applySketchShadow(y: 0)

例子:

enter image description here

Left: iPhone 8 UIView screenshot; right: Sketch rectangle.

注意:

  • 当使用非零spread 时,它会根据 CALayer 的 bounds 对路径进行硬编码。如果图层的边界发生变化,您需要再次调用 applySketchShadow() 方法。

关于ios - 如何控制阴影扩散和模糊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com