- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用以下函数来“更改”UIColor
的饱和度、亮度和 alpha:
//UIColor *color = [self color:[UIColor redColor] saturation:0.5 brightness:0.5 alpha:0.5];
- (UIColor *)color:(UIColor *)color saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha {
CGFloat h, s, b, a;
[color getHue:&h saturation:&s brightness:&b alpha:&a];
return [UIColor colorWithHue:h saturation:(s * saturation) brightness:(b * brightness) alpha:(a * alpha)];
}
在 iOS 11 (GM) 之前,此功能运行良好。但是,现在 [UIColor getHue:saturation:brightness:alpha:]
返回 NO
并且 hsba 值没有改变。
UIColor.h
中的注释说:
If the receiver is of a compatible color space, any non-NULL parameters are populated and 'YES' is returned. Otherwise, the parameters are left unchanged and 'NO' is returned.
这里的“兼容色彩空间”是什么意思?我必须转换色彩空间吗?我如何做到这一点?我的 .xcassets 中的所有颜色都是 sRGB。
编辑:一种修复方法是使用以下方法获取 HSBA 值:
CGFloat rTemp, gTemp, bTemp, aTemp;
[color getRed:&rTemp green:&gTemp blue:&bTemp alpha:&aTemp];
CGFloat h, s, b, a;
[[UIColor colorWithRed:rTemp green:gTemp blue:bTemp alpha:aTemp] getHue:&h saturation:&s brightness:&b alpha:&a];
最佳答案
如果颜色的色彩空间是 sRGB,UIColor getHue:saturation:brightness:
方法似乎不起作用,但如果颜色的色彩空间是扩展 sRGB,它就可以工作。
因此解决方案是为颜色集 Assets 中的每种颜色更新选定的颜色空间。
这可以在 Swift Playground 中进行演示,如下所示。这会使用 sRGB 颜色空间创建颜色。
if let cs = CGColorSpace(name: CGColorSpace.sRGB) {
if let cc = CGColor(colorSpace: cs, components: [0.5, 0.7, 0.3, 1.0]) {
let color = UIColor(cgColor: cc)
print(color)
var h: CGFloat = 0
var s: CGFloat = 0
var b: CGFloat = 0
if color.getHue(&h, saturation: &s, brightness: &b, alpha: nil) {
print(h, s, b)
} else {
print("Failed with color space \(cs)")
}
}
}
这给出了输出:
kCGColorSpaceModelRGB 0.5 0.7 0.3 1
Failed with color space (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1)
更新上面的代码以使用 CGColorSpace.extendedSRGB
颜色空间得到以下结果:
UIExtendedSRGBColorSpace 0.5 0.7 0.3 1
0.25 0.571428571428571 0.7
关于ios - UIColor 获取色调 :saturation:brightness:alpha: returns NO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46260228/
我有一个 Canvas ,其中包含透明背景上的艺术。我像这样降低饱和度: boardCtx.fillStyle = "rgba(0, 0, 0, 1.0)"; boardCtx.globalCompo
我想写一小段程序来启动线程,以线性方式消耗可用的 RAM 内存,直到达到一定水平,然后停止(理想情况下,暂停直到“足够”的内存被释放,然后继续创建线程, 依此类推。) 我尝试了以下操作,但是 list
让我们看一下颜色#a94442 hsl(1, 44%, 46%): 现在,如果我在 less 中执行 saturate(#a94442, 100%),我会得到 #eb0500 hsl(1, 100%,
在 GIMP 中,我可以轻松地改变色调和饱和度。例如下图是原图和色相-90、饱和度100后的最终效果。 我如何继续从 Python PIL 获得相同的结果? 原图 最终图片 最佳答案 您可以结合使用
我编写了一个简单的程序来实现 SSE 内在函数,用于计算两个大(100000 或更多元素)向量的内积。该程序比较了以传统方式计算的内积和使用内在函数计算的执行时间。一切正常,直到我在计算内积的语句之前
我有这个将类型族映射到类型级列表的最小工作示例(从 singletons 库中挑选): {-# language PolyKinds #-} {-# language DataKinds #-} {-
我有一个 RMI 服务器,需要通过模拟多个客户端的流量生成器每秒发送数千个请求进行测试。 我想做的是与 this 类似的事情但使用 RMI。 基本上,如果服务器达到饱和,则停止接受/处理请求,以便它可
下面的函数成功改变了图片的对比度和亮度。 Bitmap bmp; ImageView alteredImageView; ... public void drawAlteredImage(float
这个问题与最新版本的 Java 有关。 30 个生产者线程将字符串推送到抽象队列。一个写入器线程从同一个队列弹出并将字符串写入驻留在 5400 rpm HDD RAID 阵列上的文件。数据以大约 11
我正在做一些 3D 图形,我有一片开阔的海洋。对于这个海洋,我有一个矩阵代表海洋特定矩形部分的海况(即波浪高度)。海洋的其余部分是平坦的。我的问题是,我控制的有波浪的海位于开阔平坦海的中间,网格边缘的
我想用HSL (Hue Saturation Lightness)颜色模型(圆柱形)。也许我错过了它,但我找不到根据该方案返回颜色的函数。 hcl来自 colorspace包使用色度而不是饱和度。我想
我是 HealthKit 框架的新手,想要实时了解血流中的氧饱和度。 引用: https://github.com/coolioxlr/watchOS-2-heartrate 从这个存储库中,我尝试查
我根据这些注释在 Matlab 中编写了反向传播算法:http://dl.dropbox.com/u/7412214/BackPropagation.pdf 我的网络采用长度为 43 的输入/特征向量
在iOS 5的UIColor中有这个方法: - (BOOL)getHue:(CGFloat *)hue saturation:(CGFloat *)saturation brightness:(CGF
我正在使用以下函数来“更改”UIColor 的饱和度、亮度和 alpha: //UIColor *color = [self color:[UIColor redColor] saturation:0
也许“饱和”是错误的词,但基本上我的 Dispatch 线程一直很忙,因为我有大量的 UI 更新。 在此之前,我一直遵循(并享受)我所说的 vanilla MVVM 设计模式。我用来指导我的开发的关键
我可以用 RGB 值设置 uicolor: [UIColor colorWithRed:0.53 green:0.37 blue:0.11 alpha:1.00]; 我可以用 hsb 值设置 uico
为了在 CSS 中添加“磨砂玻璃”效果,您只需使用 backdrop-filter: blur(20px) saturation(180%)。在 Flutter 中创建背景过滤器很简单,看起来应该与此
如果我在下面的代码中插入 HSB 值 0.667, 1, 1,它应该返回蓝色。但是,它返回红色。我已经使用 rgb-to-hsb 转换器验证了 0.667 应该是蓝色调。使用此方法的不同值似乎总是会返
我正在学习使用 Swift for iOS 中的控件。我正在尝试构建一个简单的应用程序,该应用程序使用 Slider 通过 UIColor 类调整屏幕的背景颜色。 // function is cal
我是一名优秀的程序员,十分优秀!