2015-05-03 32 views
-2

有沒有人遇到過這個問題?它看起來像蘋果代碼中的一個bug,如果人們同意這個代碼應該做我認爲應該做的事情,我會提交一個雷達。我不是所有熟悉CoreGraphics色彩管理的人,因此我在提出錯誤報告之前向蘋果公司提出問題。CGColorGetComponents()不返回黑色和白色的正確值

這是直接出模板項目和唯一的非模板代碼是你在下面看到。請注意,紅色,綠色和藍色都顯示正確的元件值,但不是白色或黑色。

如果您先改變順序,例如黑白相間,然後是紅色,綠色和藍色,則問題仍然存在。

這是Swift 1.2和Xcode 6.3.1(6D1002)。

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     let colorComps = [ 
      CGColorGetComponents(UIColor.redColor().CGColor), 
      CGColorGetComponents(UIColor.greenColor().CGColor), 
      CGColorGetComponents(UIColor.blueColor().CGColor), 
      CGColorGetComponents(UIColor.blackColor().CGColor), 
      CGColorGetComponents(UIColor.whiteColor().CGColor) 
     ] 

     var components = [CGFloat]() 
     for cc in colorComps 
     { 
      for i in 0...3 { components.append(cc[i]) } 
     } 

     println("components: \(components)") 
    } 
} 
+0

真的嗎?源代碼作爲圖像? –

+0

我看到截圖之間差異不大。請將所有嘗試組合到一個數組中並顯示日誌。這將會更清潔。 –

回答

3

你不抓那是什麼一無所知CGColorGetComponents作出任何聲明或保證有關多少成分有或什麼他們的意思。 信息包含在顏色的顏色空間中。如果你看一下的白色和黑色的色彩空間,你會看到他們是兩種形式灰色的:

let sp = CGColorGetColorSpace(UIColor.whiteColor().CGColor) 
println(sp) // kCGColorSpaceDeviceGrey 

因此,他們在短短值來表示:灰量,和阿爾法。

因此,白色是[1.0,1.0] - 如果您忽略了多餘的兩個數字,這些數字一開始就不應該讀取,這正是您得到的。

同樣,黑色是[0.0,1.0],這也是你得到的。

相關問題