java试图在swift中使用CMYK值
我试图使用4个UISlider来更改CMYK的值,然后在视图中显示颜色,但我尝试了不同的公式,仍然没有得到正确的值,因此我在堆栈溢出中找到了这个answer,但它适用于安卓(Java),但我没有得到代码,这是我编写的:
let cyan = Float( 1 - (cyanSlider.value / 255))
let magenta = Float(1 - (magentaSlider.value / 255))
let yellow = Float(1 - (yellowSlider.value / 255))
cyanValue.text = String(stringInterpolationSegment: cyan)
magentaValue.text = String(stringInterpolationSegment: magenta)
yellowValue.text = String(stringInterpolationSegment: yellow)
答案是:
int r,g,b,c,m,y,k;
int computedC,computedM,computedY;
int minCMY;
if(r==0 && g==0 && b==0) return {0,0,0,1}
computedC = 1 - (r/255);
computedM = 1 - (g/255);
computedY = 1 - (b/255);
minCMY = Math.min(computedC,Math.min(computedM,computedY));
computedC = (computedC - minCMY) / (1 - minCMY) ;
computedM = (computedM - minCMY) / (1 - minCMY) ;
computedY = (computedY - minCMY) / (1 - minCMY) ;
return {computedC,computedM,computedY,minCMY};
我不明白这部分代码:
minCMY = Math.min(computedC,Math.min(computedM,computedY));
我该如何在swift上写这个?或者objective-c和我将尝试理解objective-c代码,但最好是swift
谢谢,我对斯威夫特很陌生:(
# 1 楼答案
Swift有一个“内置的”
min()
函数,它接受一个变量 参数的数量,因此您的代码可以很容易地转换为Swift请注意,我已经修改了函数以获取RGB颜色分量 作为0.0范围内的
CGFloat
。。。1.0,这是常见的表示形式 在UIKit类中,比如UIColor
但实际上需要的是CMYK的反向转换 致RGB:
您可以使用它来设置视图的背景色 CMYK滑块值:
(请注意,上述转换方法非常简单。为了更好地 结果人们会使用基于ICC的颜色转换,例如 UIColor CMYK and Lab Values?。)