当前位置: 首页 > 面试题库 >

使用HSL亮度系数从SKColor返回较浅的颜色

闻人昕
2023-03-14
问题内容

我有一个iOS
SKColor,我想将其转换为更浅的阴影(不透明,不透明/不透明),因此我想使用HSL亮度实现一个函数,该函数返回一个SKColor。即。在函数内部,将原始SKColor转换为等效的HSL,然后对HSL亮度应用一个值以获得较浅的颜色阴影,然后将此HSL颜色转换回我可以使用的SKColor。


问题答案:

Xcode 8.2.1•Swift 3.0.2

extension UIColor {
    convenience init(hue: CGFloat, saturation: CGFloat, lightness: CGFloat, alpha: CGFloat = 1)  {
        let offset = saturation * (lightness < 0.5 ? lightness : 1 - lightness)
        let brightness = lightness + offset
        let saturation = lightness > 0 ? 2 * offset / brightness : 0
        self.init(hue: hue, saturation: saturation, brightness: brightness, alpha: alpha)
    }
    var lighter: UIColor? {
        return applying(lightness: 1.25)
    }
    func applying(lightness value: CGFloat) -> UIColor? {
        guard let hsl = hsl else { return nil }
        return UIColor(hue: hsl.hue, saturation: hsl.saturation, lightness: hsl.lightness * value, alpha: hsl.alpha)
    }
    var hsl: (hue: CGFloat, saturation: CGFloat, lightness: CGFloat, alpha: CGFloat)? {
        var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0, hue: CGFloat = 0
        guard
            getRed(&red, green: &green, blue: &blue, alpha: &alpha),
            getHue(&hue, saturation: nil, brightness: nil, alpha: nil)
        else { return nil }
        let upper = max(red, green, blue)
        let lower = min(red, green, blue)
        let range = upper - lower
        let lightness = (upper + lower) / 2
        let saturation = range == 0 ? 0 : range / (lightness < 0.5 ? lightness * 2 : 2 - lightness * 2)
        return (hue, saturation, lightness, alpha)
    }
}
let purple = UIColor(red: 160/255, green: 118/255, blue: 200/255, alpha: 1)
let lighter = purple.lighter


 类似资料:
  • 本文向大家介绍iOS 从UIColor调整颜色的亮度,包括了iOS 从UIColor调整颜色的亮度的使用技巧和注意事项,需要的朋友参考一下 示例 下面的代码示例将为您提供该颜色的调整版本,其中较高的百分比将变亮,而较低的百分比将变暗。 目标C 迅速            

  • 问题内容: 假设我有#404040颜色代码。如何生成新的颜色代码,该颜色代码的明暗比为20%(或给定x%)?我需要它来在动态站点中生成悬停颜色(该颜色正在使用主题更改)。因此,不能将另一个类或:hover与预定义的类一起使用。 谢谢 问题答案: 现在处理RGB(A)输入以及十六进制(3位数或6)。

  • 问题内容: 我正在使用SASS进行某些样式设置。我有基色,并且我希望所有其他颜色都相对于基色进行更改。我已经按照需要设置了颜色,但是颜色是硬编码的,而不是根据基本颜色计算得出的。 是否有一种工具可以快速为两种颜色之间的差异生成SASS颜色功能?但是它仅允许我使用滑块生成输出颜色,而不是自己设置输出颜色并生成函数。 希望这是有道理的。 问题答案: 您可以签出以下资源: 基本上,这是它的实质: 您想要

  • 我使用MdDialogModule显示一个带有输入字段的对话框窗口。模态打开良好,我能够在输入字段中输入文本并提交,但单击提交按钮后,我希望输入表单中的数据返回到称为对话框组件的主组件,并关闭对话框。 我的对话框组件代码如下所示 主组件中调用对话框的方法如下所示。现在没有返回任何响应,它返回未定义,因为我还没有弄清楚。

  • 问题内容: 我有一个返回信息菜单(基本上是菜单,menu_headers和项)的应用程序。我想要这样的东西: 那会返回一个菜单,但是我想我需要在这里完成处理程序。 我目前有: 但是我实际上该如何退货?我99%确信这是某种类型的完成处理程序,但是,对于Swift和Alamofire来说,这是我的新手,我有点迷失了。我已经知道我无法使用Swift中的Alamofire返回值,但是知道其中某些值很快就会

  • 本文向大家介绍浅谈jquery回调函数callback的使用,包括了浅谈jquery回调函数callback的使用的使用技巧和注意事项,需要的朋友参考一下 回调函数必须是全局函数或者静态函数,不可定义为某个特定的类的成员函数 callback函数在当前动画100%完成之后执行 本文就先到这里了,希望对大家有所帮助